4 Fehler, die Sie beim Programmieren von Excel-Makros mit VBA vermeiden können

Einfacher Code und Makros sind die Schlüssel zu Microsoft Excel-Superpowers. Auch Nicht-Programmierer können ihren Tabellen mit Virtual Basics for Applications (VBA) mühelos beeindruckende Funktionen hinzufügen. Vermeiden Sie einfach diese Programmierung Anfänger Fehler!

Einfacher Code und Makros sind die Schlüssel zu Microsoft Excel-Superpowers.  Auch Nicht-Programmierer können ihren Tabellen mit Virtual Basics for Applications (VBA) mühelos beeindruckende Funktionen hinzufügen.  Vermeiden Sie einfach diese Programmierung Anfänger Fehler!
Werbung

Microsoft Excel ist ein sehr fähiges Datenanalyse-Tool bereits, aber mit der Fähigkeit, sich wiederholende Aufgaben mit Makros zu automatisieren. Wie man E-Mails von einer Excel-Tabelle mit VBA-Skripten versendet Wie man E-Mails von einer Excel-Tabelle sendet Mit VBA-Skripten Wir zeigen Ihnen, wie Richten Sie automatisierte E-Mails innerhalb von Excel mithilfe von Collaboration Data Objects (CDO) und VBA-Skripts ein. Unsere Code-Vorlagen machen das viel einfacher als es klingt! Lesen Sie mehr, indem Sie einfachen Code in (VBA) schreiben, es ist viel mächtiger. Falsch verwendet, kann VBA jedoch viele Probleme verursachen.

Selbst wenn Sie kein Programmierer sind, bietet VBA einfache Funktionen, mit denen Sie Ihren Tabellen wirklich beeindruckende Funktionen hinzufügen können.

Ob Sie ein VBA-Guru sind, der Dashboards in Excel erstellt Erstellen Sie Ihr eigenes Wetter-Dashboard in dieser Google Spreadsheet-Master-Klasse Erstellen Sie Ihr eigenes Wetter-Dashboard in dieser Google Spreadsheet-Master-Klasse Möchten Sie Ihr Google Drive-Konto in ein intelligentes Wetteranalysesystem verwandeln und lebe eine Star Trek-Fantasie aus? OK! Lesen Sie mehr, oder ein Neuling, der nur einfache Skripte zu schreiben versteht, die grundlegende Zellberechnungen durchführen, können Sie einfache Programmiertechniken folgen, die Ihnen helfen, die Chancen zu verbessern, sauberen und fehlerfreien Code zu schreiben.

Erste Schritte mit VBA

Wenn Sie zuvor nicht in VBA in Excel programmiert haben, ist das Aktivieren der Developer-Tools ziemlich einfach. Gehe einfach zu Datei > Optionen und dann Band anpassen . Verschieben Sie einfach die Entwickler- Befehlsgruppe vom linken Fensterbereich nach rechts.

Excel-VBA1

Stellen Sie sicher, dass das Kontrollkästchen aktiviert ist und jetzt die Registerkarte Entwickler in Ihrem Excel-Menü angezeigt wird.

Excel-VBA2

Der einfachste Weg, um an dieser Stelle in das Code-Editor-Fenster zu gelangen, besteht darin, einfach im Developer-Menü unter Controls auf die Schaltfläche Code anzeigen zu klicken.

1. Schreckliche Variablennamen

Jetzt, wo Sie im Code-Fenster sind, ist es Zeit zu beginnen, VBA-Code zu schreiben Wie Sie Ihre eigene einfache App mit VBA machen können Wie Sie Ihre eigene einfache App mit VBA machen können Für diejenigen unter Ihnen, die wirklich gerne schreiben könnten Ihre eigene Anwendung, aber habe noch nie zuvor eine einzige Zeile Code eingegeben, ich werde Sie durch die Herstellung Ihrer sehr ... Lesen Sie mehr. Der erste wichtige Schritt in den meisten Programmen, ob in VBA oder einer anderen Sprache, ist die Definition Ihrer Variablen.

Während meiner paar Jahrzehnte des Code-Schreibens stieß ich auf viele Denkschulen, wenn es um variable Namenskonventionen ging und lernte ein paar Dinge auf die harte Tour. Hier sind die schnellen Tipps zum Erstellen von Variablennamen:

  • Mache sie so kurz wie möglich.
  • Machen Sie sie so aussagekräftig wie möglich.
  • Vorstellen Sie sie mit variabler Art (Boolean, Integer, etc ...).
  • Denken Sie daran, den richtigen Bereich zu verwenden (siehe unten).

Hier ist ein Beispiel-Screenshot von einem Programm, das ich oft verwende, um WMIC Windows-Aufrufe von Excel zu machen, um PC-Informationen zu sammeln. Wie man alle PC-Informationen mit einem einfachen Excel VBA-Skript sehen kann Wie man alle PC-Informationen mit einem einfachen Excel VBA-Skript Excel und 10 Minuten Arbeit geben Ihnen detailliertere Informationen über Ihren Computer als Sie jemals für möglich gehalten haben. Klingt zu gut um wahr zu sein? Das ist Windows, wenn Sie wissen, wie man es benutzt. Weiterlesen .

Excel-VBA3

Wenn Sie die Variablen innerhalb einer Funktion innerhalb des Moduls oder Objekts verwenden wollen (ich werde das unten erklären), müssen Sie sie als "öffentliche" Variable deklarieren, indem Sie der Deklaration mit Public vorangestellt werden. Andernfalls werden Variablen deklariert, indem sie mit dem Wort Dim vorangestellt werden.

Wie Sie sehen können, ist die Variable, wenn sie eine Ganzzahl ist, mit int vorangestellt. Wenn es eine Zeichenfolge ist, dann str . Dies hilft später beim Programmieren, da Sie immer wissen, welche Art von Daten die Variable enthält, indem Sie einfach auf den Namen schauen. Sie werden auch feststellen, dass, wenn es so etwas wie eine Zeichenfolge gibt, die einen Computernamen enthält, die Variable strComputerName heißt.

Vermeiden Sie sehr verschlungene oder verwirrende Variablennamen, die nur Sie verstehen. Erleichtere es einem anderen Programmierer, hinter dich zu kommen und zu verstehen, was das alles bedeutet!

Ein anderer Fehler, den Leute machen, ist das Zurücklassen von Blattnamen als Standard "Sheet1", "Sheet2", etc ... Dies fügt einem Programm weitere Verwirrung hinzu. Benennen Sie die Blätter stattdessen so, dass sie sinnvoll sind.

Excel-VBA4

Auf diese Weise, wenn Sie auf den Blattnamen in Ihrem Excel-VBA-Code verweisen Verwenden von VBA zum Automatisieren von Internet Explorer-Sitzungen aus einer Excel-Tabelle Verwenden von VBA zum Automatisieren von Internet Explorer-Sitzungen aus einer Excel-Tabelle Die Integration mit Windows ermöglicht die Steuerung von Internet Explorer in einer Reihe von überraschende Möglichkeiten bei der Verwendung von Visual Basic für Applikationen (VBA) -Skript aus jeder Anwendung, die es unterstützt, z. B. Word, Outlook oder Excel. Lesen Sie mehr, Sie beziehen sich auf einen Namen, der Sinn ergibt. Im obigen Beispiel habe ich ein Blatt, auf dem ich Netzwerkinformationen abrufe, also rufe ich das Blatt "Netzwerk" auf. Wenn ich jetzt im Code immer auf das Netzwerkblatt verweisen möchte, kann ich das schnell tun, ohne nachzusehen, welche Blattnummer es ist.

2. Brechen statt Schleifen

Eines der häufigsten Probleme neuer Programmierer haben 6 Life Habits, dass Programmierung kann Ihnen heute lehren 6 Life Habits, dass Programmierung kann Ihnen heute lehren Alles, was Sie wissen müssen, über ein erfolgreiches Leben zu leben, können Sie von einem Computer-Programm bekommen. Glaub mir nicht? Weiter lesen. Lesen Sie mehr, wenn sie anfangen zu schreiben Code ist richtig mit Schleifen. Und da so viele Leute, die Excel VBA verwenden, sehr viel Code-Neulinge sind, ist schlechtes Looping epidemisch.

Schleifen ist in Excel sehr verbreitet, da Datenwerte häufig in einer ganzen Zeile oder Spalte verarbeitet werden. Daher müssen Sie Schleifen verarbeiten, um alle Daten zu verarbeiten. Neue Programmierer möchten oft sofort aus einer Schleife (entweder einer For-Schleife oder einem While-Look) ausbrechen, wenn eine bestimmte Bedingung erfüllt ist.

Excel-VBA5

Sie können die Komplexität des obigen Codes ignorieren. Beachten Sie jedoch, dass es in der inneren IF-Anweisung eine Option zum Beenden der For-Schleife gibt, wenn die Bedingung wahr ist. Hier ist ein einfacheres Beispiel:

For x = 1 To 20 If x = 6 Then Exit For y = x + intRoomTemp Next i 

Neue Programmierer nehmen diesen Ansatz, weil es einfach ist. Wenn eine Bedingung auftritt, auf die Sie warten müssen, um eine Schleife zu beenden, ist die Versuchung, sofort wieder herauszuspringen, stark, aber tun Sie es nicht.

Meistens ist der Code, der nach dem "Break" kommt, wichtig, um zu verarbeiten, sogar das letzte Mal durch die Schleife vor dem Beenden. Eine viel sauberere und professionellere Methode, um Bedingungen zu behandeln, bei denen Sie eine Schleife in der Mitte durchlassen möchten, besteht darin, diese Beendigungsbedingung in eine While-Anweisung aufzunehmen.

 While (x>=1 AND x<=20 AND x6) For x = 1 To 20 y = x + intRoomTemp Next i Wend 

Dies ermöglicht einen logischen Fluss Ihres Codes, wobei der letzte Durchlauf ausgeführt wird, wenn x 5 ist, und dann ordnungsgemäß beendet wird, sobald die For-Schleife bis zu 6 zählt. Es ist nicht erforderlich, unbequeme EXIT- oder BREAK-Befehle in die Mitte der Schleife einzuschließen.

3. Keine Verwendung von Arrays

Ein weiterer interessanter Fehler, dass neue VBA-Programmierer Die Grundlagen der Computerprogrammierung 101 - Variablen und Datentypen Die Grundlagen der Computerprogrammierung 101 - Variablen und Datentypen Nachdem ich etwas über objektorientierte Programmierung eingeführt und darüber gesprochen habe und wo der Name herkommt, dachte ich, es ist Zeit die absoluten Grundlagen der Programmierung auf nicht-sprachspezifische Weise durchlaufen. Dies ... Read More make versucht, alles in zahlreichen verschachtelten Schleifen zu verarbeiten, die während des Berechnungsprozesses durch Zeilen und Spalten filtern.

Dies kann zwar auch funktionieren, es kann aber auch zu erheblichen Performance-Problemen führen, wenn Sie ständig dieselben Berechnungen für die gleichen Zahlen in derselben Spalte durchführen müssen. Das Durchlaufen dieser Spalte und das Extrahieren der Werte jedes einzelnen Mal ist nicht nur mühsam zu programmieren, es ist ein Mörder auf Ihrem Prozessor. Eine effizientere Möglichkeit, lange Listen von Zahlen zu handhaben, ist die Verwendung eines Arrays.

Wenn Sie noch nie ein Array verwendet haben, haben Sie keine Angst. Stellen Sie sich ein Array als eine Eiswürfelschale mit einer bestimmten Anzahl von "Würfeln" vor, in die Sie Informationen eingeben können. Die Würfel sind von 1 bis 12 nummeriert, und so "packt" man Daten in sie ein.

Eiswürfelbehälter

Sie können ein Array einfach definieren, indem Sie Dim arrMyArray (12) als Integer eingeben.

Dies schafft ein "Fach" mit 12 Steckplätzen zum Auffüllen.

Hier sehen Sie, wie ein Zeilen-Looping-Code ohne Array aussehen könnte:

 Sub Test1() Dim x As Integer intNumRows = Range("A2", Range("A2").End(xldown)).Rows.Count Range("A2").Select For x = 1 To intNumRows If Range("A" & str(x)).value< 100 then intTemp = (Range("A" & str(x)).value) * 32 - 100 End If ActiveCell.Offset(1, 0).Select Next End Sub 

In diesem Beispiel wird der Code durch jede einzelne Zelle in dem Bereich verarbeitet und führt die Temperaturberechnung durch.

Wenn Sie später im Programm noch eine andere Berechnung für dieselben Werte durchführen möchten, müssen Sie diesen Code duplizieren, alle diese Zellen verarbeiten und die neue Berechnung durchführen.

Wenn Sie stattdessen ein Array verwenden, können Sie die 12 Werte in der Zeile in Ihrem praktischen Speicherarray speichern. Wenn Sie dann später Berechnungen mit diesen Zahlen ausführen möchten, sind sie bereits im Speicher und bereit zu gehen.

 Sub Test1() Dim x As Integer intNumRows = Range("A2", Range("A2").End(xldown)).Rows.Count Range("A2").Select For x = 1 To intNumRows arrMyArray(x-1) = Range("A" & str(x)).value) ActiveCell.Offset(1, 0).Select Next End Sub 

Das "x-1" für das Zeigen auf das Array-Element ist nur notwendig, da die For-Schleife bei 1 beginnt. Array-Elemente müssen bei 0 beginnen.

Aber sobald Sie Ihr Array alle mit den Werten aus der Zeile geladen haben, können Sie später im Programm beliebige Berechnungen zusammenstellen, indem Sie das Array verwenden.

 Sub TempCalc() For x = 0 To UBound(arrMyArray) arrMyTemps(y) = arrMyArray(x) * 32 - 100 Next End Sub 

Dieses Beispiel durchläuft das gesamte Zeilenarray (UBound gibt Ihnen die Anzahl der Datenwerte im Array an), führt die Temperaturberechnung aus und fügt sie dann in ein anderes Array namens arrMyTemps ein.

Sie können sehen, wie viel einfacher der zweite Berechnungscode ist. Und von diesem Zeitpunkt an ist Ihr Array bereits vorinstalliert und einsatzbereit, wenn Sie mehr Berechnungen für denselben Zahlensatz durchführen möchten.

4. Zu viele Referenzen verwenden

Unabhängig davon, ob Sie in einem vollwertigen Visual Basic oder VBA programmieren, müssen Sie "Verweise" einschließen, um auf bestimmte Funktionen zuzugreifen, z. B. auf eine Access-Datenbank zuzugreifen oder eine Ausgabe in eine Textdatei zu schreiben.

Referenzen sind eine Art "Bibliotheken", gefüllt mit Funktionen, auf die Sie zugreifen können, wenn Sie diese Datei aktivieren. Sie können Referenzen in der Entwickleransicht finden, indem Sie im Menü auf Extras klicken und dann auf Referenzen klicken.

Excel-VBA6

In diesem Fenster finden Sie alle aktuell ausgewählten Referenzen für Ihr aktuelles VBA-Projekt.

Excel-VBA7

Nach meiner Erfahrung können sich die Auswahlmöglichkeiten hier von einer Excel-Installation zu einer anderen und von einem PC zu einem anderen ändern. Viel hängt davon ab, was andere Leute mit Excel auf diesem PC gemacht haben, ob bestimmte Add-Ons oder Funktionen hinzugefügt oder aktiviert wurden oder ob einige andere Programmierer bestimmte Referenzen in früheren Projekten verwendet haben.

Der Grund, warum es gut ist, diese Liste zu überprüfen, ist, dass unnötige Referenzen Systemressourcen verschwenden. Wenn Sie keine XML-Dateimanipulation verwenden, warum sollte Microsoft XML dann ausgewählt werden? Wenn Sie nicht mit einer Datenbank kommunizieren, entfernen Sie Microsoft DAO. Wenn Sie keine Ausgabe in eine Textdatei schreiben, entfernen Sie Microsoft Scripting Runtime .

Wenn Sie nicht sicher sind, was diese ausgewählten Referenzen tun, drücken Sie F2 und Sie sehen den Objekt-Explorer. Oben in diesem Fenster können Sie die zu durchsuchende Referenzbibliothek auswählen.

Excel-VBA8

Nach der Auswahl sehen Sie alle Objekte und verfügbaren Funktionen, auf die Sie klicken können, um mehr zu erfahren.

Wenn ich zum Beispiel auf die DAO-Bibliothek klicke, wird schnell klar, dass es darum geht, sich mit Datenbanken zu verbinden und mit ihnen zu kommunizieren.

Excel-VBA9

Die Anzahl der Referenzen zu reduzieren, die Sie in Ihrem Programmierprojekt verwenden, ist nur sinnvoll und wird dazu beitragen, dass Ihre gesamte Anwendung effizienter ausgeführt wird.

Programmierung in Excel VBA

Die ganze Idee, Code in Excel zu schreiben Zeit mit Textoperationen in Excel sparen Zeit mit Textoperationen in Excel sparen Excel kann mit Zahlen Magie machen und es kann Zeichen genauso gut handhaben. In diesem Handbuch wird gezeigt, wie Sie Text in Kalkulationstabellen analysieren, konvertieren, ersetzen und bearbeiten können. Mit diesen Grundlagen können Sie komplexe Transformationen durchführen. Read More erschreckt viele Menschen, aber diese Angst ist wirklich nicht notwendig. Visual Basic für Applikationen ist eine sehr einfache Sprache, die Sie erlernen sollten. Wenn Sie die oben genannten grundlegenden Verfahren befolgen, stellen Sie sicher, dass Ihr Code sauber, effizient und leicht verständlich ist.

Kodieren Sie in VBA? Welche Art von Lektionen haben Sie im Laufe der Jahre gelernt, die Sie mit anderen Lesern teilen können, die zum ersten Mal VBA lernen? Teilen Sie Ihre Tipps in den Kommentaren unten!

Bildnachweis: Computer von www.BillionPhotos.com über Shutterstock, Bunte Eiswürfelschalen von hahauk via Shutterstock.com

In this article