Inhaltsverzeichnis
Wir setzen die Reihe der Tutorials über benutzerdefinierte Funktionen fort. In den vorangegangenen Artikeln haben wir uns mit benutzerdefinierten Funktionen vertraut gemacht und gelernt, wie man sie erstellt und verwendet. In diesem Handbuch werden wir uns mit den Besonderheiten der Verwendung dieser Funktionen befassen und die Unterschiede zwischen UDFs und VBA-Makros kennenlernen.
In diesem Tutorium werden wir Folgendes lernen:
Wir hoffen, dass dieser Artikel Ihr Wissen über UDF erweitert und Ihnen hilft, sie noch effektiver in Ihren Excel-Arbeitsmappen einzusetzen.
Ist UDF und Makro das Gleiche?
Was ist der Unterschied zwischen benutzerdefinierten Funktionen und VBA-Makros, die mit dem VBA-Editor erstellt werden, und was ist zu bevorzugen?
Der wichtigste Unterschied besteht darin, dass die Funktion die Berechnung durchführt, während das Makro eine Aktion ausführt. Eine benutzerdefinierte Funktion muss wie eine normale Excel-Funktion in eine Zelle geschrieben werden. Als Ergebnis ihrer Ausführung gibt die Zelle einen Wert zurück. Gleichzeitig ist es unmöglich, die Werte anderer Zellen sowie einige Eigenschaften der aktuellen Zelle zu ändern (insbesondere,Sie können jedoch eine benutzerdefinierte Funktion in Formeln für die bedingte Formatierung verwenden.
UDF und VBA-Makros funktionieren auf unterschiedliche Weise. Wenn Sie beispielsweise eine UDF im Visual Basic-Editor erstellen, beginnen Sie mit einer Anweisung Funktion und enden mit einer Funktion beenden Wenn Sie ein Makro aufzeichnen, beginnen Sie mit einer Anweisung Unter und enden mit einer End Sub.
Nicht alle Visual Basic-Operatoren können zur Erstellung von UDFs verwendet werden, daher ist ein Makro die vielseitigere Lösung.
Im Gegensatz zu einer benutzerdefinierten Funktion muss ein Makro dem Benutzer keine Argumente übergeben (und kann auch keine Argumente akzeptieren).
Der Punkt ist, dass einige Befehle von Makros Zelladressen oder Formatierungselemente (z. B. Farbe) verwenden können. Wenn Sie Zellen verschieben, Zeilen und Spalten hinzufügen oder entfernen oder das Format von Zellen ändern, können Sie Ihre Makros leicht "kaputt machen". Dies ist insbesondere dann möglich, wenn Sie Ihre Datei an Kollegen weitergeben, die nicht wissen, wie Ihre Makros funktionieren.
Sie haben zum Beispiel eine Datei mit einem perfekt funktionierenden Makro. Diese Formel berechnet den Prozentsatz der Zellen A1 bis A4. Das Makro ändert die Farbe dieser Zellen auf gelb. In der aktiven Zelle wird ein Prozentformat eingestellt.
Wenn Sie oder eine andere Person eine neue Zeile einfügen wollen, sucht das Makro weiter nach dem Wert in der Zelle A4 (dem Parameter 4,1 in Ihrer UDF), schlägt fehl und gibt einen Fehler zurück:
In diesem Fall ist der Fehler durch Division durch Null aufgetreten (kein Wert in einer neu hinzugefügten Zeile). Wenn das Makro, sagen wir, eine Summierung durchführt, dann erhalten Sie einfach ein falsches Ergebnis, ohne dass Sie es merken.
Im Gegensatz zu Makros können benutzerdefinierte Funktionen eine solche unangenehme Situation nicht verursachen.
Nachfolgend sehen Sie die Leistung der gleichen Berechnungen unter Verwendung einer UDF. Hier können Sie Eingabezellen an beliebiger Stelle im Arbeitsblatt angeben, und es treten keine unerwarteten Probleme auf, wenn Sie diese ändern.
Ich habe die folgende Formel in C3 geschrieben:
=UDF_vs_Makro(A1,A4)
Dann fügte ich eine leere Zeile ein, und die Formel änderte sich, wie Sie auf dem Screenshot oben sehen können.
Jetzt können wir eine Eingabezelle oder eine Zelle mit einer Funktion an eine beliebige Stelle verschieben. Das Ergebnis wird immer korrekt sein.
Ein zusätzlicher Vorteil der Verwendung von UDFs ist, dass sie automatisch aktualisiert werden, wenn sich der Wert in der Eingabezelle ändert. Bei der Verwendung von Makros müssen Sie immer sicherstellen, dass alle Daten auf dem neuesten Stand sind.
In Anbetracht dieses Beispiels würde ich es vorziehen, UDFs zu verwenden, wo immer es möglich ist, und Makros nur für andere Aktivitäten zu verwenden, die keine Berechnungen sind.
Beschränkungen und Nachteile der Verwendung von UDF
Die Vorteile von UDF habe ich oben bereits erwähnt. Kurz gesagt, es kann Berechnungen durchführen, die mit Standard-Excel-Funktionen nicht möglich sind. Außerdem kann es lange und komplexe Formeln speichern und verwenden, indem es sie in eine einzige Funktion umwandelt. Und Sie müssen komplizierte Formeln nicht immer wieder neu schreiben.
Lassen Sie uns nun näher auf die Unzulänglichkeiten des Stadtentwicklungsfonds eingehen:
- Die Erstellung von UDFs erfordert die Verwendung von VBA. Daran führt kein Weg vorbei. Das bedeutet, dass der Benutzer die UDF nicht auf dieselbe Weise aufzeichnen kann wie ein Excel-Makro. Sie müssen die UDF selbst erstellen. Sie können jedoch Teile des zuvor aufgezeichneten Makrocodes kopieren und in Ihre Funktion einfügen. Sie müssen sich nur der Einschränkungen von benutzerdefinierten Funktionen bewusst sein.
- Ein weiterer Nachteil von UDF ist, dass sie wie jede andere Excel-Funktion nur einen einzelnen Wert oder eine Reihe von Werten in eine Zelle zurückgeben kann. Sie führt lediglich Berechnungen durch, mehr nicht.
- Wenn Sie Ihre Arbeitsmappe für Ihre Kollegen freigeben möchten, müssen Sie Ihre UDFs in derselben Datei speichern, da Ihre benutzerdefinierten Funktionen sonst für sie nicht funktionieren.
- Mit dem VBA-Editor erstellte benutzerdefinierte Funktionen sind langsamer als reguläre Funktionen. Dies macht sich vor allem bei großen Tabellen bemerkbar. Leider ist VBA bisher eine sehr langsame Programmiersprache. Verwenden Sie daher bei großen Datenmengen möglichst Standardfunktionen oder erstellen Sie UDFs mit der Funktion LAMBDA.
Einschränkungen der benutzerdefinierten Funktion:
- UDFs sind dazu gedacht, Berechnungen durchzuführen und einen Wert zurückzugeben. Sie können nicht anstelle von Makros verwendet werden.
- Sie können den Inhalt der anderen Zellen nicht ändern (nur die aktive Zelle).
- Funktionsnamen müssen bestimmten Regeln folgen, z. B. können Sie keinen Namen verwenden, der mit einem nativen Excel-Funktionsnamen oder einer Zelladresse übereinstimmt, wie z. B. AB123.
- Ihre benutzerdefinierte Funktion darf keine Leerzeichen im Namen enthalten, aber sie kann den Unterstrich enthalten. Die bevorzugte Methode ist jedoch die Verwendung von Großbuchstaben am Anfang jedes neuen Wortes (z. B. GetMaxBetween).
- Eine UDF kann keine Zellen in andere Bereiche des Arbeitsblatts kopieren und einfügen.
- Sie können das aktive Arbeitsblatt nicht ändern.
- UDFs können die Formatierung der aktiven Zelle nicht ändern. Wenn Sie die Formatierung einer Zelle bei der Anzeige verschiedener Werte ändern möchten, sollten Sie die bedingte Formatierung verwenden.
- Sie können keine weiteren Bücher öffnen.
- Sie können nicht verwendet werden, um Makros mit Application.OnTime auszuführen.
- Eine benutzerdefinierte Funktion kann nicht mit dem Makrorecorder erstellt werden.
- Die Funktionen erscheinen nicht in der Entwickler> Makros Dialog.
- Ihre Funktionen erscheinen in der Dialogbox ( Einfügen> Funktion ) und in der Liste der Funktionen nur, wenn sie als Öffentlich (dies ist die Standardeinstellung, sofern nicht anders angegeben).
- Alle Funktionen, die als Privat wird nicht in der Merkmalsliste angezeigt.
Ein recht langsamer Betrieb sowie einige Einschränkungen bei der Verwendung lassen Sie vielleicht denken: "Wozu sind diese benutzerdefinierten Funktionen gut?"
Sie können sehr nützlich sein und sind es auch, wenn man die ihnen auferlegten Einschränkungen beachtet. Wenn Sie lernen, wie man UDFs richtig erstellt und verwendet, können Sie eine eigene Funktionsbibliothek erstellen, die Ihre Möglichkeiten bei der Arbeit mit Daten in Excel erheblich erweitern wird.
Für mich sind benutzerdefinierte Funktionen eine große Zeitersparnis. Und was ist mit Ihnen? Haben Sie schon versucht, Ihre eigene UDF zu erstellen? Hat sie Ihnen besser gefallen als die Basisfunktionen von Excel? Lassen Sie uns in den Kommentaren darüber diskutieren :)