VBA - Kurzanleitung
VBA steht für Visual Basic für AAnwendungen eine ereignisgesteuerte Programmiersprache von Microsoft, die jetzt hauptsächlich in Microsoft Office-Anwendungen wie MSExcel, MS-Word und MS-Access verwendet wird.
Es hilft Technikern, angepasste Anwendungen und Lösungen zu erstellen, um die Funktionen dieser Anwendungen zu verbessern. Der Vorteil dieser Funktion besteht darin, dass auf Ihrem PC KEIN Visual Basic installiert sein muss. Die Installation von Office hilft jedoch implizit dabei, den Zweck zu erreichen.
Sie können VBA in allen Office-Versionen verwenden, von MS-Office 97 bis MS-Office 2013 sowie mit jeder der neuesten verfügbaren Versionen. Unter VBA ist Excel VBA am beliebtesten. Der Vorteil der Verwendung von VBA besteht darin, dass Sie mithilfe der linearen Programmierung sehr leistungsfähige Tools in MS Excel erstellen können.
Anwendung von VBA
Sie fragen sich vielleicht, warum Sie VBA in Excel verwenden sollten, da MS-Excel selbst viele integrierte Funktionen bietet. MS-Excel bietet nur grundlegende integrierte Funktionen, die möglicherweise nicht ausreichen, um komplexe Berechnungen durchzuführen. Unter solchen Umständen wird VBA die naheliegendste Lösung.
Beispielsweise ist es sehr schwierig, die monatliche Rückzahlung eines Kredits mithilfe der in Excel integrierten Formeln zu berechnen. Vielmehr ist es einfach, einen VBA für eine solche Berechnung zu programmieren.
Zugriff auf den VBA-Editor
Drücken Sie im Excel-Fenster "ALT + F11". Ein VBA-Fenster wird geöffnet, wie im folgenden Screenshot gezeigt.
In diesem Kapitel erfahren Sie, wie Sie Schritt für Schritt ein einfaches Makro schreiben.
Step 1- Aktivieren Sie zunächst das Menü "Entwickler" in Excel 20XX. Klicken Sie dazu auf Datei → Optionen.
Step 2- Klicken Sie auf die Registerkarte "Multifunktionsleiste anpassen" und aktivieren Sie "Entwickler". OK klicken'.
Step 3 - Das Menüband "Entwickler" wird in der Menüleiste angezeigt.
Step 4 - Klicken Sie auf die Schaltfläche 'Visual Basic', um den VBA-Editor zu öffnen.
Step 5- Starten Sie die Skripterstellung, indem Sie eine Schaltfläche hinzufügen. Klicken Sie auf Einfügen → Wählen Sie die Schaltfläche.
Step 6 - Klicken Sie mit der rechten Maustaste und wählen Sie "Eigenschaften".
Step 7 - Bearbeiten Sie den Namen und die Beschriftung wie im folgenden Screenshot gezeigt.
Step 8 - Doppelklicken Sie nun auf die Schaltfläche, und die Übersicht über die Unterprozedur wird angezeigt (siehe folgenden Screenshot).
Step 9 - Starten Sie die Codierung, indem Sie einfach eine Nachricht hinzufügen.
Private Sub say_helloworld_Click()
MsgBox "Hi"
End Sub
Step 10- Klicken Sie auf die Schaltfläche, um die Unterprozedur auszuführen. Die Ausgabe der Unterprozedur ist im folgenden Screenshot dargestellt. Stellen Sie sicher, dass der Entwurfsmodus aktiviert ist. Klicken Sie einfach darauf, um es einzuschalten, wenn es nicht eingeschaltet ist.
Note - In weiteren Kapiteln werden wir die Verwendung einer einfachen Schaltfläche demonstrieren, wie in Schritt 1 bis 10 erläutert. Daher ist es wichtig, dieses Kapitel gründlich zu verstehen.
In diesem Kapitel werden Sie mit den häufig verwendeten Excel-VBA-Terminologien vertraut gemacht. Diese Terminologien werden in weiteren Modulen verwendet, daher ist es wichtig, jede dieser Terminologien zu verstehen.
Module
Module ist der Bereich, in dem der Code geschrieben wird. Dies ist eine neue Arbeitsmappe, daher gibt es keine Module.
Navigieren Sie zum Einfügen eines Moduls zu Einfügen → Modul. Sobald ein Modul eingefügt ist, wird 'module1' erstellt.
Innerhalb der Module können wir VBA-Code schreiben und der Code wird innerhalb einer Prozedur geschrieben. Eine Prozedur / Unterprozedur ist eine Reihe von VBA-Anweisungen, die Anweisungen zur Vorgehensweise geben.
Verfahren
Prozeduren sind eine Gruppe von Anweisungen, die als Ganzes ausgeführt werden und Excel anweisen, wie eine bestimmte Aufgabe ausgeführt wird. Die ausgeführte Aufgabe kann eine sehr einfache oder eine sehr komplizierte Aufgabe sein. Es ist jedoch eine gute Praxis, komplizierte Verfahren in kleinere zu zerlegen.
Die beiden Haupttypen von Prozeduren sind Sub und Function.
Funktion
Eine Funktion ist eine Gruppe von wiederverwendbarem Code, der an einer beliebigen Stelle in Ihrem Programm aufgerufen werden kann. Dadurch entfällt die Notwendigkeit, immer wieder denselben Code zu schreiben. Dies hilft den Programmierern, ein großes Programm in eine Reihe kleiner und überschaubarer Funktionen zu unterteilen.
Neben den eingebauten Funktionen ermöglicht VBA auch das Schreiben benutzerdefinierter Funktionen, zwischen denen Anweisungen geschrieben werden Function und End Function.
Unterverfahren
Unterprozeduren funktionieren ähnlich wie Funktionen. Während Unterprozeduren KEINEN Wert zurückgeben, können Funktionen einen Wert zurückgeben oder nicht. Unterprozeduren können ohne Aufrufschlüsselwort aufgerufen werden. Unterprozeduren sind immer enthaltenSub und End Sub Aussagen.
Kommentare werden verwendet, um die Programmlogik und die Benutzerinformationen zu dokumentieren, mit denen andere Programmierer in Zukunft nahtlos an demselben Code arbeiten können.
Es enthält Informationen wie entwickelt von, modifiziert von und kann auch integrierte Logik enthalten. Kommentare werden vom Interpreter während der Ausführung ignoriert.
Kommentare in VBA werden mit zwei Methoden bezeichnet.
Jede Aussage, die mit einem einfachen Anführungszeichen (') beginnt, wird als Kommentar behandelt. Es folgt ein Beispiel.
' This Script is invoked after successful login
' Written by : TutorialsPoint
' Return Value : True / False
Jede Anweisung, die mit dem Schlüsselwort "REM" beginnt. Es folgt ein Beispiel.
REM This Script is written to Validate the Entered Input
REM Modified by : Tutorials point/user2
Das MsgBox function Zeigt ein Meldungsfeld an und wartet darauf, dass der Benutzer auf eine Schaltfläche klickt. Anschließend wird eine Aktion basierend auf der vom Benutzer angeklickten Schaltfläche ausgeführt.
Syntax
MsgBox(prompt[,buttons][,title][,helpfile,context])
Parameterbeschreibung
Prompt- Ein erforderlicher Parameter. Eine Zeichenfolge, die im Dialogfeld als Nachricht angezeigt wird. Die maximale Länge der Eingabeaufforderung beträgt ca. 1024 Zeichen. Wenn sich die Nachricht auf mehr als eine Zeile erstreckt, können die Zeilen mit einem Wagenrücklaufzeichen (Chr (13)) oder einem Zeilenvorschubzeichen (Chr (10)) zwischen den einzelnen Zeilen getrennt werden.
Buttons- Ein optionaler Parameter. Ein numerischer Ausdruck, der den Typ der anzuzeigenden Schaltflächen, den zu verwendenden Symbolstil, die Identität der Standardschaltfläche und die Modalität des Meldungsfelds angibt. Wenn Sie dieses Feld leer lassen, ist der Standardwert für Schaltflächen 0.
Title- Ein optionaler Parameter. Ein Zeichenfolgenausdruck, der in der Titelleiste des Dialogfelds angezeigt wird. Wenn der Titel leer bleibt, wird der Anwendungsname in die Titelleiste eingefügt.
Helpfile- Ein optionaler Parameter. Ein Zeichenfolgenausdruck, der die Hilfedatei angibt, die zum Bereitstellen der kontextsensitiven Hilfe für das Dialogfeld verwendet werden soll.
Context- Ein optionaler Parameter. Ein numerischer Ausdruck, der die Hilfekontextnummer angibt, die der Hilfeautor dem entsprechenden Hilfethema zugewiesen hat. Wenn ein Kontext bereitgestellt wird, muss auch eine Hilfedatei bereitgestellt werden.
Das Buttons Der Parameter kann einen der folgenden Werte annehmen:
0 vbOKOnly - Zeigt nur die Schaltfläche OK an.
1 vbOKCancel - Zeigt die Schaltflächen OK und Abbrechen an.
2 vbAbortRetryIgnore - Zeigt die Schaltflächen Abbrechen, Wiederholen und Ignorieren an.
3 vbYesNoCancel - Zeigt die Schaltflächen Ja, Nein und Abbrechen an.
4 vbYesNo - Zeigt die Schaltflächen Ja und Nein an.
5 vbRetryCancel - Zeigt die Schaltflächen Wiederholen und Abbrechen an.
16 vbCritical - Zeigt das Symbol für kritische Nachrichten an.
32 vbQuestion - Zeigt das Symbol für die Warnabfrage an.
48 vbExclamation - Zeigt das Warnmeldungssymbol an.
64 vbInformation - Zeigt das Informationsnachrichtensymbol an.
0 vbDefaultButton1 - Die erste Schaltfläche ist die Standardeinstellung.
256 vbDefaultButton2 - Die zweite Schaltfläche ist die Standardeinstellung.
512 vbDefaultButton3 - Die dritte Schaltfläche ist die Standardeinstellung.
768 vbDefaultButton4 - Die vierte Schaltfläche ist die Standardeinstellung.
0 vbApplicationModal Anwendungsmodal - Die aktuelle Anwendung funktioniert erst, wenn der Benutzer auf das Meldungsfeld reagiert.
4096 vbSystemModal System modal - Alle Anwendungen funktionieren erst, wenn der Benutzer auf das Meldungsfeld reagiert.
Die obigen Werte sind logisch in vier Gruppen unterteilt: Die first group(0 bis 5) gibt die Schaltflächen an, die im Meldungsfeld angezeigt werden sollen. Dassecond group (16, 32, 48, 64) beschreibt den Stil des anzuzeigenden Symbols third group (0, 256, 512, 768) gibt an, welche Schaltfläche die Standardeinstellung sein muss, und die fourth group (0, 4096) bestimmt die Modalität des Meldungsfeldes.
Rückgabewerte
Die MsgBox-Funktion kann einen der folgenden Werte zurückgeben, mit denen die Schaltfläche identifiziert werden kann, auf die der Benutzer im Meldungsfeld geklickt hat.
- 1 - vbOK - OK wurde angeklickt
- 2 - vbCancel - Abbrechen wurde angeklickt
- 3 - vbAbort - Abort wurde angeklickt
- 4 - vbRetry - Wiederholen wurde angeklickt
- 5 - vbIgnore - Ignorieren wurde angeklickt
- 6 - vbYes - Ja wurde angeklickt
- 7 - vbNo - Nein wurde angeklickt
Beispiel
Function MessageBox_Demo()
'Message Box with just prompt message
MsgBox("Welcome")
'Message Box with title, yes no and cancel Butttons
int a = MsgBox("Do you like blue color?",3,"Choose options")
' Assume that you press No Button
msgbox ("The Value of a is " & a)
End Function
Ausgabe
Step 1 - Die obige Funktion kann entweder durch Klicken auf die Schaltfläche "Ausführen" im VBA-Fenster oder durch Aufrufen der Funktion aus dem Excel-Arbeitsblatt ausgeführt werden, wie im folgenden Screenshot gezeigt.
Step 2 - Ein einfaches Nachrichtenfeld wird mit der Meldung "Willkommen" und der Schaltfläche "OK" angezeigt
Step 3 - Nach dem Klicken auf OK wird ein weiteres Dialogfeld mit einer Meldung mit den Schaltflächen "Ja, Nein und Abbrechen" angezeigt.
Step 4- Nach dem Klicken auf die Schaltfläche "Nein" wird der Wert dieser Schaltfläche (7) als Ganzzahl gespeichert und dem Benutzer als Meldungsfeld angezeigt, wie im folgenden Screenshot gezeigt. Anhand dieses Wertes kann verstanden werden, auf welche Schaltfläche der Benutzer geklickt hat.
Das InputBox functionfordert die Benutzer zur Eingabe von Werten auf. Wenn der Benutzer nach Eingabe der Werte auf die Schaltfläche OK klickt oder auf der Tastatur die EINGABETASTE drückt, gibt die InputBox-Funktion den Text im Textfeld zurück. Wenn der Benutzer auf die Schaltfläche Abbrechen klickt, gibt die Funktion eine leere Zeichenfolge ("") zurück.
Syntax
InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])
Parameterbeschreibung
Prompt- Ein erforderlicher Parameter. Eine Zeichenfolge, die im Dialogfeld als Nachricht angezeigt wird. Die maximale Länge der Eingabeaufforderung beträgt ca. 1024 Zeichen. Wenn sich die Nachricht auf mehr als eine Zeile erstreckt, können die Zeilen mit einem Wagenrücklaufzeichen (Chr (13)) oder einem Zeilenvorschubzeichen (Chr (10)) zwischen den einzelnen Zeilen getrennt werden.
Title- Ein optionaler Parameter. Ein Zeichenfolgenausdruck, der in der Titelleiste des Dialogfelds angezeigt wird. Wenn der Titel leer bleibt, wird der Anwendungsname in die Titelleiste eingefügt.
Default- Ein optionaler Parameter. Ein Standardtext im Textfeld, der dem Benutzer angezeigt werden soll.
XPos- Ein optionaler Parameter. Die Position vonXDie Achse repräsentiert den Eingabeaufforderungsabstand von der linken Seite des Bildschirms horizontal. Wenn Sie dieses Feld leer lassen, wird das Eingabefeld horizontal zentriert.
YPos- Ein optionaler Parameter. Die Position vonYDie Achse repräsentiert den Eingabeaufforderungsabstand von der linken Seite des Bildschirms vertikal. Wenn Sie dieses Feld leer lassen, wird das Eingabefeld vertikal zentriert.
Helpfile- Ein optionaler Parameter. Ein Zeichenfolgenausdruck, der die Hilfedatei angibt, die zum Bereitstellen der kontextsensitiven Hilfe für das Dialogfeld verwendet werden soll.
context- Ein optionaler Parameter. Ein numerischer Ausdruck, der die Hilfekontextnummer angibt, die der Hilfeautor dem entsprechenden Hilfethema zugewiesen hat. Wenn ein Kontext bereitgestellt wird, muss auch eine Hilfedatei bereitgestellt werden.
Beispiel
Berechnen wir die Fläche eines Rechtecks, indem wir zur Laufzeit Werte vom Benutzer mithilfe von zwei Eingabefeldern abrufen (eines für die Länge und eines für die Breite).
Function findArea()
Dim Length As Double
Dim Width As Double
Length = InputBox("Enter Length ", "Enter a Number")
Width = InputBox("Enter Width", "Enter a Number")
findArea = Length * Width
End Function
Ausgabe
Step 1 - Um dasselbe auszuführen, rufen Sie mit dem Funktionsnamen auf und drücken Sie die Eingabetaste, wie im folgenden Screenshot gezeigt.
Step 2- Bei der Ausführung wird das erste Eingabefeld (Länge) angezeigt. Geben Sie einen Wert in das Eingabefeld ein.
Step 3 - Nach Eingabe des ersten Wertes wird das zweite Eingabefeld (Breite) angezeigt.
Step 4- Klicken Sie nach Eingabe der zweiten Nummer auf die Schaltfläche OK. Der Bereich wird wie im folgenden Screenshot gezeigt angezeigt.
Variableist ein benannter Speicherort, der einen Wert enthält, der während der Skriptausführung geändert werden kann. Im Folgenden finden Sie die Grundregeln für die Benennung einer Variablen.
Sie müssen einen Buchstaben als erstes Zeichen verwenden.
Sie können kein Leerzeichen, Punkt (.), Ausrufezeichen (!) Oder die Zeichen @, &, $, # im Namen verwenden.
Der Name darf nicht länger als 255 Zeichen sein.
Sie können keine reservierten Visual Basic-Schlüsselwörter als Variablennamen verwenden.
Syntax
In VBA müssen Sie die Variablen deklarieren, bevor Sie sie verwenden können.
Dim <<variable_name>> As <<variable_type>>
Datentypen
Es gibt viele VBA-Datentypen, die in zwei Hauptkategorien unterteilt werden können, nämlich numerische und nicht numerische Datentypen.
Numerische Datentypen
Die folgende Tabelle zeigt die numerischen Datentypen und den zulässigen Wertebereich.
Art | Wertebereich |
---|---|
Byte | 0 bis 255 |
Ganze Zahl | -32.768 bis 32.767 |
Lange | -2.147.483.648 bis 2.147.483.648 |
Single | -3.402823E + 38 bis -1.401298E-45 für negative Werte 1.401298E-45 bis 3.402823E + 38 für positive Werte. |
Doppelt | -1.79769313486232e + 308 bis -4.94065645841247E-324 für negative Werte 4.94065645841247E-324 bis 1.79769313486232e + 308 für positive Werte. |
Währung | -922.337.203.685.477.5808 bis 922.337.203.685.477.5807 |
Dezimal | +/- 79.228.162.514.264.337.593.543.950.335, wenn keine Dezimalstelle verwendet wird +/- 7,9228162514264337593543950335 (28 Dezimalstellen). |
Nicht numerische Datentypen
Die folgende Tabelle zeigt die nicht numerischen Datentypen und den zulässigen Wertebereich.
Art | Wertebereich |
---|---|
String (feste Länge) | 1 bis 65.400 Zeichen |
String (variable Länge) | 0 bis 2 Milliarden Zeichen |
Datum | 1. Januar 100 bis 31. Dezember 9999 |
Boolescher Wert | Richtig oder falsch |
Objekt | Beliebiges eingebettetes Objekt |
Variante (numerisch) | Jeder Wert so groß wie doppelt |
Variante (Text) | Entspricht einer Zeichenfolge mit variabler Länge |
Example
Erstellen wir eine Schaltfläche und nennen sie 'Variables_demo', um die Verwendung von Variablen zu demonstrieren.
Private Sub say_helloworld_Click()
Dim password As String
password = "Admin#1"
Dim num As Integer
num = 1234
Dim BirthDay As Date
BirthDay = DateValue("30 / 10 / 2020")
MsgBox "Passowrd is " & password & Chr(10) & "Value of num is " &
num & Chr(10) & "Value of Birthday is " & BirthDay
End Sub
Output
Nach dem Ausführen des Skripts erfolgt die Ausgabe wie im folgenden Screenshot gezeigt.
Konstante ist ein benannter Speicherort, der einen Wert enthält, der während der Skriptausführung NICHT geändert werden kann. Wenn ein Benutzer versucht, einen konstanten Wert zu ändern, wird bei der Skriptausführung ein Fehler angezeigt. Konstanten werden genauso deklariert wie die Variablen.
Es folgen die Regeln für die Benennung einer Konstante.
Sie müssen einen Buchstaben als erstes Zeichen verwenden.
Sie können kein Leerzeichen, Punkt (.), Ausrufezeichen (!) Oder die Zeichen @, &, $, # im Namen verwenden.
Der Name darf nicht länger als 255 Zeichen sein.
Sie können keine reservierten Visual Basic-Schlüsselwörter als Variablennamen verwenden.
Syntax
In VBA müssen wir den deklarierten Konstanten einen Wert zuweisen. Ein Fehler wird ausgelöst, wenn wir versuchen, den Wert der Konstante zu ändern.
Const <<constant_name>> As <<constant_type>> = <<constant_value>>
Beispiel
Lassen Sie uns eine Schaltfläche "Constant_demo" erstellen, um zu demonstrieren, wie mit Konstanten gearbeitet wird.
Private Sub Constant_demo_Click()
Const MyInteger As Integer = 42
Const myDate As Date = #2/2/2020#
Const myDay As String = "Sunday"
MsgBox "Integer is " & MyInteger & Chr(10) & "myDate is "
& myDate & Chr(10) & "myDay is " & myDay
End Sub
Ausgabe
Nach dem Ausführen des Skripts wird die Ausgabe wie im folgenden Screenshot gezeigt angezeigt.
Ein Operator kann mit einem einfachen Ausdruck definiert werden - 4 + 5 ist gleich 9. Hier werden 4 und 5 aufgerufen operands und + heißt operator. VBA unterstützt folgende Arten von Operatoren:
- Rechenzeichen
- Vergleichsoperatoren
- Logische (oder relationale) Operatoren
- Verkettungsoperatoren
Die arithmatischen Operatoren
Folgende arithmetische Operatoren werden von VBA unterstützt.
Angenommen, Variable A hält 5 und Variable B hält 10, dann -
Beispiele anzeigen
Operator | Beschreibung | Beispiel |
---|---|---|
+ | Fügt die beiden Operanden hinzu | A + B ergibt 15 |
- - | Subtrahiert den zweiten Operanden vom ersten | A - B ergibt -5 |
* * | Multipliziert beide Operanden | A * B ergibt 50 |
/. | Dividiert den Zähler durch den Nenner | B / A ergibt 2 |
%. | Moduloperator und der Rest nach einer ganzzahligen Division | B% A ergibt 0 |
^ | Potenzierungsoperator | B ^ A ergibt 100000 |
Die Vergleichsoperatoren
Es gibt folgende Vergleichsoperatoren, die von VBA unterstützt werden.
Angenommen, Variable A hält 10 und Variable B hält 20, dann -
Beispiele anzeigen
Operator | Beschreibung | Beispiel |
---|---|---|
= | Überprüft, ob der Wert der beiden Operanden gleich ist oder nicht. Wenn ja, dann ist die Bedingung wahr. | (A = B) ist falsch. |
<> | Überprüft, ob der Wert der beiden Operanden gleich ist oder nicht. Wenn die Werte nicht gleich sind, ist die Bedingung erfüllt. | (A <> B) ist wahr. |
> | Überprüft, ob der Wert des linken Operanden größer als der Wert des rechten Operanden ist. Wenn ja, dann ist die Bedingung wahr. | (A> B) ist falsch. |
< | Überprüft, ob der Wert des linken Operanden kleiner als der Wert des rechten Operanden ist. Wenn ja, dann ist die Bedingung wahr. | (A <B) ist wahr. |
> = | Überprüft, ob der Wert des linken Operanden größer oder gleich dem Wert des rechten Operanden ist. Wenn ja, dann ist die Bedingung wahr. | (A> = B) ist falsch. |
<= | Überprüft, ob der Wert des linken Operanden kleiner oder gleich dem Wert des rechten Operanden ist. Wenn ja, dann ist die Bedingung wahr. | (A <= B) ist wahr. |
Die logischen Operatoren
Die folgenden logischen Operatoren werden von VBA unterstützt.
Angenommen, Variable A hält 10 und Variable B hält 0, dann -
Beispiele anzeigen
Operator | Beschreibung | Beispiel |
---|---|---|
UND | Wird als logischer UND-Operator bezeichnet. Wenn beide Bedingungen wahr sind, ist der Ausdruck wahr. | a <> 0 UND b <> 0 ist falsch. |
ODER | Wird als logischer ODER-Operator bezeichnet. Wenn eine der beiden Bedingungen wahr ist, ist die Bedingung wahr. | a <> 0 ODER b <> 0 ist wahr. |
NICHT | Wird als logischer NICHT-Operator bezeichnet. Wird verwendet, um den logischen Zustand seines Operanden umzukehren. Wenn eine Bedingung wahr ist, macht der Operator Logical NOT false. | NOT (a <> 0 OR b <> 0) ist falsch. |
XOR | Wird als logischer Ausschluss bezeichnet. Es ist die Kombination von NOT und OR Operator. Wenn einer und nur einer der Ausdrücke als wahr ausgewertet wird, ist das Ergebnis wahr. | (a <> 0 XOR b <> 0) ist wahr. |
Die Verkettungsoperatoren
Folgende Verkettungsoperatoren werden von VBA unterstützt.
Angenommen, Variable A hält 5 und Variable B hält 10, dann -
Beispiele anzeigen
Operator | Beschreibung | Beispiel |
---|---|---|
+ | Fügt zwei Werte als Variable hinzu. Die Werte sind numerisch | A + B ergibt 15 |
& | Verkettet zwei Werte | A & B wird 510 geben |
Angenommen, Variable A = "Microsoft" und Variable B = "VBScript", dann -
Operator | Beschreibung | Beispiel |
---|---|---|
+ | Verkettet zwei Werte | A + B gibt MicrosoftVBScript |
& | Verkettet zwei Werte | A & B wird MicrosoftVBScript geben |
Note- Verkettungsoperatoren können sowohl für Zahlen als auch für Zeichenfolgen verwendet werden. Die Ausgabe hängt vom Kontext ab, ob die Variablen einen numerischen Wert oder einen Zeichenfolgenwert enthalten.
Durch die Entscheidungsfindung können die Programmierer den Ausführungsfluss eines Skripts oder eines seiner Abschnitte steuern. Die Ausführung wird durch eine oder mehrere bedingte Anweisungen geregelt.
Es folgt die allgemeine Form einer typischen Entscheidungsstruktur, die in den meisten Programmiersprachen zu finden ist.
VBA bietet die folgenden Arten von Entscheidungserklärungen. Klicken Sie auf die folgenden Links, um deren Details zu überprüfen.
Sr.Nr. | Aussage & Beschreibung |
---|---|
1 | if-Anweisung Ein if Anweisung besteht aus einem Booleschen Ausdruck, gefolgt von einer oder mehreren Anweisungen. |
2 | if..else Anweisung Ein if elseAnweisung besteht aus einem Booleschen Ausdruck, gefolgt von einer oder mehreren Anweisungen. Wenn die Bedingung wahr ist, werden die Anweisungen unterIfAnweisungen werden ausgeführt. Wenn die Bedingung falsch ist, wird dieElse Ein Teil des Skripts wird ausgeführt. |
3 | if ... elseif..else Anweisung Ein if Aussage gefolgt von einer oder mehreren ElseIf Anweisungen, die aus booleschen Ausdrücken bestehen, gefolgt von einem optionalen else statement, wird ausgeführt, wenn alle Bedingungen falsch sind. |
4 | verschachtelte if-Anweisungen Ein if oder elseif Aussage in einem anderen if oder elseif Aussage (n). |
5 | switch-Anweisung EIN switch Mit der Anweisung kann eine Variable auf Gleichheit mit einer Liste von Werten getestet werden. |
Es kann vorkommen, dass Sie einen Codeblock mehrmals ausführen müssen. Im Allgemeinen werden Anweisungen nacheinander ausgeführt: Die erste Anweisung in einer Funktion wird zuerst ausgeführt, gefolgt von der zweiten usw.
Programmiersprachen bieten verschiedene Steuerungsstrukturen, die kompliziertere Ausführungspfade ermöglichen.
Mit einer Schleifenanweisung können wir eine Anweisung oder eine Gruppe von Anweisungen mehrmals ausführen. Es folgt die allgemeine Form einer Schleifenanweisung in VBA.
VBA bietet die folgenden Arten von Schleifen, um die Schleifenanforderungen zu erfüllen. Klicken Sie auf die folgenden Links, um deren Details zu überprüfen.
Sr.Nr. | Schleifentyp & Beschreibung |
---|---|
1 | für Schleife Führt eine Folge von Anweisungen mehrmals aus und verkürzt den Code, der die Schleifenvariable verwaltet. |
2 | für ..jede Schleife Dies wird ausgeführt, wenn mindestens ein Element in der Gruppe vorhanden ist, und für jedes Element in einer Gruppe wiederholt. |
3 | while..wend Schleife Dies testet die Bedingung, bevor der Schleifenkörper ausgeführt wird. |
4 | do..while Schleifen Die do..While-Anweisungen werden ausgeführt, solange die Bedingung wahr ist. (Dh) Die Schleife sollte wiederholt werden, bis die Bedingung falsch ist. |
5 | tun ... bis Schleifen Die do..Until-Anweisungen werden ausgeführt, solange die Bedingung False ist. (Dh) Die Schleife sollte wiederholt werden, bis die Bedingung True ist. |
Schleifensteuerungsanweisungen
Schleifensteueranweisungen ändern die Ausführung von ihrer normalen Reihenfolge. Wenn die Ausführung einen Bereich verlässt, werden alle verbleibenden Anweisungen in der Schleife NICHT ausgeführt.
VBA unterstützt die folgenden Steueranweisungen. Klicken Sie auf die folgenden Links, um deren Details zu überprüfen.
S.No. | Steueranweisung & Beschreibung |
---|---|
1 | Beenden Für Anweisung Beendet die For loop Anweisung und überträgt die Ausführung auf die Anweisung unmittelbar nach der Schleife |
2 | Beenden Sie die Do-Anweisung Beendet die Do While Anweisung und überträgt die Ausführung auf die Anweisung unmittelbar nach der Schleife |
Zeichenfolgen sind eine Folge von Zeichen, die entweder aus Alphabeten, Zahlen, Sonderzeichen oder allen bestehen können. Eine Variable wird als Zeichenfolge bezeichnet, wenn sie in doppelte Anführungszeichen "" eingeschlossen ist.
Syntax
variablename = "string"
Beispiele
str1 = "string" ' Only Alphabets
str2 = "132.45" ' Only Numbers
str3 = "!@#$;*" ' Only Special Characters
Str4 = "Asc23@#" ' Has all the above
String-Funktionen
Es gibt vordefinierte VBA-String-Funktionen, mit denen die Entwickler sehr effektiv mit den Strings arbeiten können. Im Folgenden finden Sie String-Methoden, die in VBA unterstützt werden. Bitte klicken Sie auf jede der Methoden, um sie im Detail zu kennen.
Sr.Nr. | Funktionsname & Beschreibung |
---|---|
1 | InStr Gibt das erste Vorkommen des angegebenen Teilstrings zurück. Die Suche erfolgt von links nach rechts. |
2 | InstrRev Gibt das erste Vorkommen des angegebenen Teilstrings zurück. Die Suche erfolgt von rechts nach links. |
3 | Lcase Gibt den Kleinbuchstaben der angegebenen Zeichenfolge zurück. |
4 | Ucase Gibt den Großbuchstaben der angegebenen Zeichenfolge zurück. |
5 | Links Gibt eine bestimmte Anzahl von Zeichen von der linken Seite der Zeichenfolge zurück. |
6 | Recht Gibt eine bestimmte Anzahl von Zeichen von der rechten Seite der Zeichenfolge zurück. |
7 | Mitte Gibt eine bestimmte Anzahl von Zeichen aus einer Zeichenfolge basierend auf den angegebenen Parametern zurück. |
8 | Ltrim Gibt eine Zeichenfolge zurück, nachdem die Leerzeichen auf der linken Seite der angegebenen Zeichenfolge entfernt wurden. |
9 | Rtrim Gibt eine Zeichenfolge zurück, nachdem die Leerzeichen auf der rechten Seite der angegebenen Zeichenfolge entfernt wurden. |
10 | Trimmen Gibt einen Zeichenfolgenwert zurück, nachdem sowohl die führenden als auch die nachfolgenden Leerzeichen entfernt wurden. |
11 | Len Gibt die Länge der angegebenen Zeichenfolge zurück. |
12 | Ersetzen Gibt eine Zeichenfolge zurück, nachdem eine Zeichenfolge durch eine andere ersetzt wurde. |
13 | Raum Füllt eine Zeichenfolge mit der angegebenen Anzahl von Leerzeichen. |
14 | StrComp Gibt nach dem Vergleich der beiden angegebenen Zeichenfolgen einen ganzzahligen Wert zurück. |
15 | String Gibt eine Zeichenfolge mit einem angegebenen Zeichen für die angegebene Anzahl von Malen zurück. |
16 | StrReverse Gibt eine Zeichenfolge zurück, nachdem die Reihenfolge der Zeichen der angegebenen Zeichenfolge umgekehrt wurde. |
Mit den VBScript-Funktionen für Datum und Uhrzeit können Entwickler Datum und Uhrzeit von einem Format in ein anderes konvertieren oder den Datums- oder Zeitwert in dem Format ausdrücken, das einer bestimmten Bedingung entspricht.
Datumsfunktionen
Sr.Nr. | Bedienungsanleitung |
---|---|
1 | Datum Eine Funktion, die das aktuelle Systemdatum zurückgibt. |
2 | CDate Eine Funktion, die eine bestimmte Eingabe in ein Datum konvertiert. |
3 | DateAdd Eine Funktion, die ein Datum zurückgibt, zu dem ein bestimmtes Zeitintervall hinzugefügt wurde. |
4 | DateDiff Eine Funktion, die die Differenz zwischen zwei Zeiträumen zurückgibt. |
5 | DatePart Eine Funktion, die einen bestimmten Teil des angegebenen Eingabedatums zurückgibt. |
6 | DateSerial Eine Funktion, die ein gültiges Datum für das angegebene Jahr, den angegebenen Monat und das angegebene Datum zurückgibt. |
7 | FormatDateTime Eine Funktion, die das Datum basierend auf den angegebenen Parametern formatiert. |
8 | IsDate Eine Funktion, die einen Booleschen Wert zurückgibt, unabhängig davon, ob der angegebene Parameter ein Datum ist oder nicht. |
9 | Tag Eine Funktion, die eine Ganzzahl zwischen 1 und 31 zurückgibt, die den Tag des angegebenen Datums darstellt. |
10 | Monat Eine Funktion, die eine Ganzzahl zwischen 1 und 12 zurückgibt, die den Monat des angegebenen Datums darstellt. |
11 | Jahr Eine Funktion, die eine Ganzzahl zurückgibt, die das Jahr des angegebenen Datums darstellt. |
12 | Monatsname Eine Funktion, die den Namen des jeweiligen Monats für das angegebene Datum zurückgibt. |
13 | Wochentag Eine Funktion, die eine Ganzzahl (1 bis 7) zurückgibt, die den Wochentag für den angegebenen Tag darstellt. |
14 | WeekDayName Eine Funktion, die den Wochentagsnamen für den angegebenen Tag zurückgibt. |
Zeitfunktionen
Sr.Nr. | Bedienungsanleitung |
---|---|
1 | Jetzt Eine Funktion, die das aktuelle Systemdatum und die aktuelle Systemzeit zurückgibt. |
2 | Stunde Eine Funktion, die eine Ganzzahl zwischen 0 und 23 zurückgibt, die den Stundenanteil der angegebenen Zeit darstellt. |
3 | Minute Eine Funktion, die eine Ganzzahl zwischen 0 und 59 zurückgibt, die den Minutenteil der angegebenen Zeit darstellt. |
4 | Zweite Eine Funktion, die eine Ganzzahl zwischen 0 und 59 zurückgibt, die den Sekundenanteil der angegebenen Zeit darstellt. |
5 | Zeit Eine Funktion, die die aktuelle Systemzeit zurückgibt. |
6 | Timer Eine Funktion, die die Anzahl der Sekunden und Millisekunden seit 12:00 Uhr zurückgibt. |
7 | TimeSerial Eine Funktion, die die Zeit für die spezifische Eingabe von Stunde, Minute und Sekunde zurückgibt. |
8 | Zeitwert Eine Funktion, die die Eingabezeichenfolge in ein Zeitformat konvertiert. |
Wir wissen sehr gut, dass eine Variable ein Container zum Speichern eines Werts ist. Manchmal sind Entwickler in der Lage, mehr als einen Wert in einer einzelnen Variablen gleichzeitig zu speichern. Wenn eine Reihe von Werten in einer einzelnen Variablen gespeichert wird, wird dies als bezeichnetarray variable.
Array-Deklaration
Arrays werden auf dieselbe Weise deklariert, wie eine Variable deklariert wurde, außer dass die Deklaration einer Arrayvariablen in Klammern verwendet wird. Im folgenden Beispiel wird die Größe des Arrays in den Klammern angegeben.
'Method 1 : Using Dim
Dim arr1() 'Without Size
'Method 2 : Mentioning the Size
Dim arr2(5) 'Declared with size of 5
'Method 3 : using 'Array' Parameter
Dim arr3
arr3 = Array("apple","Orange","Grapes")
Obwohl die Array-Größe als 5 angegeben ist, kann sie 6 Werte enthalten, da der Array-Index bei NULL beginnt.
Der Array-Index darf nicht negativ sein.
VBScript-Arrays können jeden Variablentyp in einem Array speichern. Daher kann ein Array eine Ganzzahl, eine Zeichenfolge oder Zeichen in einer einzelnen Arrayvariablen speichern.
Zuweisen von Werten zu einem Array
Die Werte werden dem Array zugewiesen, indem für jeden der zuzuweisenden Werte ein Array-Indexwert angegeben wird. Es kann eine Zeichenfolge sein.
Beispiel
Fügen Sie eine Schaltfläche hinzu und fügen Sie die folgende Funktion hinzu.
Private Sub Constant_demo_Click()
Dim arr(5)
arr(0) = "1" 'Number as String
arr(1) = "VBScript" 'String
arr(2) = 100 'Number
arr(3) = 2.45 'Decimal Number
arr(4) = #10/07/2013# 'Date
arr(5) = #12.45 PM# 'Time
msgbox("Value stored in Array index 0 : " & arr(0))
msgbox("Value stored in Array index 1 : " & arr(1))
msgbox("Value stored in Array index 2 : " & arr(2))
msgbox("Value stored in Array index 3 : " & arr(3))
msgbox("Value stored in Array index 4 : " & arr(4))
msgbox("Value stored in Array index 5 : " & arr(5))
End Sub
Wenn Sie die obige Funktion ausführen, wird die folgende Ausgabe erzeugt.
Value stored in Array index 0 : 1
Value stored in Array index 1 : VBScript
Value stored in Array index 2 : 100
Value stored in Array index 3 : 2.45
Value stored in Array index 4 : 7/10/2013
Value stored in Array index 5 : 12:45:00 PM
Mehrdimensionale Arrays
Arrays sind nicht nur auf eine einzelne Dimension beschränkt, sondern können maximal 60 Dimensionen haben. Zweidimensionale Arrays sind die am häufigsten verwendeten.
Beispiel
Im folgenden Beispiel wird ein mehrdimensionales Array mit 3 Zeilen und 4 Spalten deklariert.
Private Sub Constant_demo_Click()
Dim arr(2,3) as Variant ' Which has 3 rows and 4 columns
arr(0,0) = "Apple"
arr(0,1) = "Orange"
arr(0,2) = "Grapes"
arr(0,3) = "pineapple"
arr(1,0) = "cucumber"
arr(1,1) = "beans"
arr(1,2) = "carrot"
arr(1,3) = "tomato"
arr(2,0) = "potato"
arr(2,1) = "sandwitch"
arr(2,2) = "coffee"
arr(2,3) = "nuts"
msgbox("Value in Array index 0,1 : " & arr(0,1))
msgbox("Value in Array index 2,2 : " & arr(2,2))
End Sub
Wenn Sie die obige Funktion ausführen, wird die folgende Ausgabe erzeugt.
Value stored in Array index : 0 , 1 : Orange
Value stored in Array index : 2 , 2 : coffee
ReDim-Anweisung
Die ReDim-Anweisung wird verwendet, um dynamische Array-Variablen zu deklarieren und Speicherplatz zuzuweisen oder neu zuzuweisen.
Syntax
ReDim [Preserve] varname(subscripts) [, varname(subscripts)]
Parameterbeschreibung
Preserve - Ein optionaler Parameter, mit dem die Daten in einem vorhandenen Array beibehalten werden, wenn Sie die Größe der letzten Dimension ändern.
Varname - Ein erforderlicher Parameter, der den Namen der Variablen angibt und den Standardkonventionen für die Benennung von Variablen entsprechen sollte.
Subscripts - Ein erforderlicher Parameter, der die Größe des Arrays angibt.
Beispiel
Im folgenden Beispiel wurde ein Array neu definiert und die Werte bleiben erhalten, wenn die vorhandene Größe des Arrays geändert wird.
Note - Wenn Sie die Größe eines Arrays ändern, das kleiner als ursprünglich ist, gehen die Daten in den eliminierten Elementen verloren.
Private Sub Constant_demo_Click()
Dim a() as variant
i = 0
redim a(5)
a(0) = "XYZ"
a(1) = 41.25
a(2) = 22
REDIM PRESERVE a(7)
For i = 3 to 7
a(i) = i
Next
'to Fetch the output
For i = 0 to ubound(a)
Msgbox a(i)
Next
End Sub
Wenn Sie die obige Funktion ausführen, wird die folgende Ausgabe erzeugt.
XYZ
41.25
22
3
4
5
6
7
Array-Methoden
In VBScript gibt es verschiedene integrierte Funktionen, mit denen die Entwickler Arrays effektiv handhaben können. Alle Methoden, die in Verbindung mit Arrays verwendet werden, sind unten aufgeführt. Bitte klicken Sie auf den Methodennamen, um mehr darüber zu erfahren.
Sr.Nr. | Bedienungsanleitung |
---|---|
1 | LBound Eine Funktion, die eine Ganzzahl zurückgibt, die dem kleinsten Index der angegebenen Arrays entspricht. |
2 | UBound Eine Funktion, die eine Ganzzahl zurückgibt, die dem größten Index der angegebenen Arrays entspricht. |
3 | Teilt Eine Funktion, die ein Array zurückgibt, das eine bestimmte Anzahl von Werten enthält. Aufteilen basierend auf einem Trennzeichen. |
4 | Beitreten Eine Funktion, die eine Zeichenfolge zurückgibt, die eine bestimmte Anzahl von Teilzeichenfolgen in einem Array enthält. Dies ist eine genau entgegengesetzte Funktion der Split-Methode. |
5 | Filter Eine Funktion, die ein nullbasiertes Array zurückgibt, das eine Teilmenge eines Zeichenfolgenarrays basierend auf bestimmten Filterkriterien enthält. |
6 | IsArray Eine Funktion, die einen booleschen Wert zurückgibt, der angibt, ob die Eingabevariable ein Array ist oder nicht. |
7 | Löschen Eine Funktion, die den zugewiesenen Speicher für die Array-Variablen wiederherstellt. |
EIN functionist eine Gruppe von wiederverwendbarem Code, der überall in Ihrem Programm aufgerufen werden kann. Dadurch entfällt die Notwendigkeit, immer wieder denselben Code zu schreiben. Dies ermöglicht es den Programmierern, ein großes Programm in eine Reihe kleiner und verwaltbarer Funktionen zu unterteilen.
Neben eingebauten Funktionen können mit VBA auch benutzerdefinierte Funktionen geschrieben werden. In diesem Kapitel erfahren Sie, wie Sie Ihre eigenen Funktionen in VBA schreiben.
Funktionsdefinition
Eine VBA-Funktion kann eine optionale return-Anweisung haben. Dies ist erforderlich, wenn Sie einen Wert von einer Funktion zurückgeben möchten.
Sie können beispielsweise zwei Zahlen in einer Funktion übergeben und dann von der Funktion erwarten, dass sie ihre Multiplikation in Ihrem aufrufenden Programm zurückgibt.
Note - Eine Funktion kann mehrere durch Komma getrennte Werte als Array zurückgeben, das dem Funktionsnamen selbst zugewiesen ist.
Bevor wir eine Funktion verwenden, müssen wir diese bestimmte Funktion definieren. Die gebräuchlichste Methode zum Definieren einer Funktion in VBA ist die Verwendung vonFunction Schlüsselwort, gefolgt von einem eindeutigen Funktionsnamen, und es kann eine Liste von Parametern und eine Anweisung mit enthalten oder nicht End FunctionSchlüsselwort, das das Ende der Funktion angibt. Es folgt die grundlegende Syntax.
Syntax
Fügen Sie eine Schaltfläche hinzu und fügen Sie die folgende Funktion hinzu.
Function Functionname(parameter-list)
statement 1
statement 2
statement 3
.......
statement n
End Function
Beispiel
Fügen Sie die folgende Funktion hinzu, die den Bereich zurückgibt. Beachten Sie, dass ein Wert / Werte mit dem Funktionsnamen selbst zurückgegeben werden können.
Function findArea(Length As Double, Optional Width As Variant)
If IsMissing(Width) Then
findArea = Length * Length
Else
findArea = Length * Width
End If
End Function
Eine Funktion aufrufen
Um eine Funktion aufzurufen, rufen Sie die Funktion unter Verwendung des Funktionsnamens auf, wie im folgenden Screenshot gezeigt.
Die Ausgabe des unten gezeigten Bereichs wird dem Benutzer angezeigt.
Sub Procedures sind ähnlich wie Funktionen, es gibt jedoch einige Unterschiede.
Unterprozeduren geben KEINEN Wert zurück, während Funktionen einen Wert zurückgeben können oder nicht.
Unterprozeduren können ohne ein Aufrufschlüsselwort aufgerufen werden.
Unterprozeduren sind immer in Unter- und End-Unteranweisungen enthalten.
Beispiel
Sub Area(x As Double, y As Double)
MsgBox x * y
End Sub
Prozeduren aufrufen
Um eine Prozedur irgendwo im Skript aufzurufen, können Sie eine Funktion aufrufen. Wir können nicht die gleiche Methode wie eine Funktion verwenden, da die Unterprozedur KEINEN Wert zurückgibt.
Function findArea(Length As Double, Width As Variant)
area Length, Width ' To Calculate Area 'area' sub proc is called
End Function
Jetzt können Sie nur die Funktion aufrufen, nicht jedoch die im folgenden Screenshot gezeigte Unterprozedur.
Die Fläche wird berechnet und nur im Feld Nachricht angezeigt.
In der Ergebniszelle wird NULL angezeigt, da der Flächenwert NICHT von der Funktion zurückgegeben wird. Kurz gesagt, Sie können keine direkte Prozedur aus dem Excel-Arbeitsblatt aufrufen.
VBA, eine ereignisgesteuerte Programmierung, kann ausgelöst werden, wenn Sie eine Zelle oder einen Bereich von Zellenwerten manuell ändern. Ein Änderungsereignis kann die Arbeit erleichtern, aber Sie können eine Seite voller Formatierungen sehr schnell beenden. Es gibt zwei Arten von Ereignissen.
- Arbeitsblattereignisse
- Arbeitsmappenereignisse
Arbeitsblattereignisse
Arbeitsblattereignisse werden ausgelöst, wenn sich das Arbeitsblatt ändert. Es wird erstellt, indem Sie mit der rechten Maustaste auf die Registerkarte "Blatt" klicken, "Code anzeigen" auswählen und den Code später einfügen.
Der Benutzer kann jedes dieser Arbeitsblätter auswählen und "Arbeitsblatt" aus der Dropdown-Liste auswählen, um die Liste aller unterstützten Arbeitsblattereignisse abzurufen.
Im Folgenden sind die unterstützten Arbeitsblattereignisse aufgeführt, die vom Benutzer hinzugefügt werden können.
Private Sub Worksheet_Activate()
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Private Sub Worksheet_Calculate()
Private Sub Worksheet_Change(ByVal Target As Range)
Private Sub Worksheet_Deactivate()
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Beispiel
Angenommen, wir müssen vor dem Doppelklick nur eine Nachricht anzeigen.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
MsgBox "Before Double Click"
End Sub
Ausgabe
Wenn Sie auf eine Zelle doppelklicken, wird dem Benutzer das Meldungsfeld angezeigt, wie im folgenden Screenshot gezeigt.
Arbeitsmappenereignisse
Arbeitsmappenereignisse werden ausgelöst, wenn sich die Arbeitsmappe insgesamt ändert. Sie können den Code für Arbeitsmappenereignisse hinzufügen, indem Sie "ThisWorkbook" und "Workbook" aus der Dropdown-Liste auswählen (siehe folgenden Screenshot). Die Unterprozedur Workbook_open wird dem Benutzer sofort angezeigt (siehe folgenden Screenshot).
Im Folgenden sind die unterstützten Arbeitsmappenereignisse aufgeführt, die vom Benutzer hinzugefügt werden können.
Private Sub Workbook_AddinUninstall()
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Private Sub Workbook_Deactivate()
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Private Sub Workbook_Open()
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Private Sub Workbook_WindowResize(ByVal Wn As Window)
Beispiel
Angenommen, wir müssen dem Benutzer lediglich eine Meldung anzeigen, dass ein neues Blatt erfolgreich erstellt wurde, wenn ein neues Blatt erstellt wird.
Private Sub Workbook_NewSheet(ByVal Sh As Object)
MsgBox "New Sheet Created Successfully"
End Sub
Ausgabe
Beim Erstellen einer neuen Excel-Tabelle wird dem Benutzer eine Meldung angezeigt, wie im folgenden Screenshot gezeigt.
Bei der Programmierung gibt es drei Arten von Fehlern: (a) Syntaxfehler, (b) Laufzeitfehler und (c) logische Fehler.
Syntaxfehler
Syntaxfehler, auch als Analysefehler bezeichnet, treten zur Interpretationszeit für VBScript auf. Die folgende Zeile verursacht beispielsweise einen Syntaxfehler, da eine schließende Klammer fehlt.
Function ErrorHanlding_Demo()
dim x,y
x = "Tutorialspoint"
y = Ucase(x
End Function
Laufzeitfehler
Laufzeitfehler, auch Ausnahmen genannt, treten während der Ausführung nach der Interpretation auf.
Die folgende Zeile verursacht beispielsweise einen Laufzeitfehler, da hier die Syntax korrekt ist, zur Laufzeit jedoch versucht wird, fnmultiply aufzurufen, eine nicht vorhandene Funktion.
Function ErrorHanlding_Demo1()
Dim x,y
x = 10
y = 20
z = fnadd(x,y)
a = fnmultiply(x,y)
End Function
Function fnadd(x,y)
fnadd = x + y
End Function
Logische Fehler
Logische Fehler können die am schwierigsten zu ermittelnde Art von Fehlern sein. Diese Fehler sind nicht das Ergebnis eines Syntax- oder Laufzeitfehlers. Stattdessen treten sie auf, wenn Sie einen Fehler in der Logik machen, die Ihr Skript steuert, und Sie nicht das erwartete Ergebnis erhalten.
Sie können diese Fehler nicht abfangen, da es von Ihren Geschäftsanforderungen abhängt, welche Art von Logik Sie in Ihr Programm einfügen möchten.
Zum Beispiel durch Teilen einer Zahl durch Null oder durch ein geschriebenes Skript, das in eine Endlosschleife eintritt.
Err Objekt
Angenommen, wir haben einen Laufzeitfehler, dann wird die Ausführung durch Anzeigen der Fehlermeldung gestoppt. Wenn wir als Entwickler den Fehler erfassen möchten, dannError Objekt wird verwendet.
Beispiel
Im folgenden Beispiel Err.Number gibt die Fehlernummer und an Err.Description gibt die Fehlerbeschreibung an.
Err.Raise 6 ' Raise an overflow error.
MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description
Err.Clear ' Clear the error.
Fehlerbehandlung
VBA aktiviert eine Fehlerbehandlungsroutine und kann auch zum Deaktivieren einer Fehlerbehandlungsroutine verwendet werden. Ohne eine On Error-Anweisung ist jeder auftretende Laufzeitfehler schwerwiegend: Eine Fehlermeldung wird angezeigt und die Ausführung wird abrupt gestoppt.
On Error { GoTo [ line | 0 | -1 ] | Resume Next }
Sr.Nr. | Schlüsselwort & Beschreibung |
---|---|
1 | GoTo line Aktiviert die Fehlerbehandlungsroutine, die an der im erforderlichen Zeilenargument angegebenen Zeile beginnt. Die angegebene Zeile muss sich in derselben Prozedur wie die On Error-Anweisung befinden. Andernfalls tritt ein Fehler bei der Kompilierung auf. |
2 | GoTo 0 Deaktiviert die aktivierte Fehlerbehandlungsroutine in der aktuellen Prozedur und setzt sie auf Nichts zurück. |
3 | GoTo -1 Deaktiviert die aktivierte Ausnahme in der aktuellen Prozedur und setzt sie auf Nichts zurück. |
4 | Resume Next Gibt an, dass das Steuerelement bei Auftreten eines Laufzeitfehlers zu der Anweisung unmittelbar nach der Anweisung wechselt, in der der Fehler aufgetreten ist, und die Ausführung ab diesem Zeitpunkt fortgesetzt wird. |
Beispiel
Public Sub OnErrorDemo()
On Error GoTo ErrorHandler ' Enable error-handling routine.
Dim x, y, z As Integer
x = 50
y = 0
z = x / y ' Divide by ZERO Error Raises
ErrorHandler: ' Error-handling routine.
Select Case Err.Number ' Evaluate error number.
Case 10 ' Divide by zero error
MsgBox ("You attempted to divide by zero!")
Case Else
MsgBox "UNKNOWN ERROR - Error# " & Err.Number & " : " & Err.Description
End Select
Resume Next
End Sub
Bei der Programmierung mit VBA gibt es nur wenige wichtige Objekte, mit denen sich ein Benutzer befassen würde.
- Anwendungsobjekte
- Arbeitsmappenobjekte
- Arbeitsblattobjekte
- Bereichsobjekte
Anwendungsobjekte
Das Anwendungsobjekt besteht aus folgenden Elementen:
- Anwendungsweite Einstellungen und Optionen.
- Methoden, die Objekte der obersten Ebene zurückgeben, z. B. ActiveCell, ActiveSheet usw.
Beispiel
'Example 1 :
Set xlapp = CreateObject("Excel.Sheet")
xlapp.Application.Workbooks.Open "C:\test.xls"
'Example 2 :
Application.Windows("test.xls").Activate
'Example 3:
Application.ActiveCell.Font.Bold = True
Arbeitsmappenobjekte
Das Arbeitsmappenobjekt ist Mitglied der Arbeitsmappensammlung und enthält alle Arbeitsmappenobjekte, die derzeit in Microsoft Excel geöffnet sind.
Beispiel
'Ex 1 : To close Workbooks
Workbooks.Close
'Ex 2 : To Add an Empty Work Book
Workbooks.Add
'Ex 3: To Open a Workbook
Workbooks.Open FileName:="Test.xls", ReadOnly:=True
'Ex : 4 - To Activate WorkBooks
Workbooks("Test.xls").Worksheets("Sheet1").Activate
Arbeitsblattobjekte
Das Arbeitsblattobjekt ist Mitglied der Arbeitsblattsammlung und enthält alle Arbeitsblattobjekte in einer Arbeitsmappe.
Beispiel
'Ex 1 : To make it Invisible
Worksheets(1).Visible = False
'Ex 2 : To protect an WorkSheet
Worksheets("Sheet1").Protect password:=strPassword, scenarios:=True
Bereichsobjekte
Bereichsobjekte repräsentieren eine Zelle, eine Zeile, eine Spalte oder eine Auswahl von Zellen, die einen oder mehrere fortlaufende Zellenblöcke enthalten.
'Ex 1 : To Put a value in the cell A5
Worksheets("Sheet1").Range("A5").Value = "5235"
'Ex 2 : To put a value in range of Cells
Worksheets("Sheet1").Range("A1:A4").Value = 5
Sie können auch eine Excel-Datei lesen und den Inhalt der Zelle mit VBA in eine Textdatei schreiben. Mit VBA können Benutzer mit zwei Methoden mit Textdateien arbeiten:
- Dateisystemobjekt
- mit Write Command
Dateisystemobjekt (FSO)
Wie der Name schon sagt, helfen FSOs den Entwicklern bei der Arbeit mit Laufwerken, Ordnern und Dateien. In diesem Abschnitt wird die Verwendung eines BFS erläutert.
Sr.Nr. | Objekttyp & Beschreibung |
---|---|
1 | Drive Laufwerk ist ein Objekt. Enthält Methoden und Eigenschaften, mit denen Sie Informationen zu einem an das System angeschlossenen Laufwerk sammeln können. |
2 | Drives Drives ist eine Sammlung. Es enthält eine Liste der Laufwerke, die entweder physisch oder logisch an das System angeschlossen sind. |
3 | File Datei ist ein Objekt. Es enthält Methoden und Eigenschaften, mit denen Entwickler eine Datei erstellen, löschen oder verschieben können. |
4 | Files Dateien ist eine Sammlung. Es enthält eine Liste aller in einem Ordner enthaltenen Dateien. |
5 | Folder Ordner ist ein Objekt. Es bietet Methoden und Eigenschaften, mit denen Entwickler Ordner erstellen, löschen oder verschieben können. |
6 | Folders Ordner ist eine Sammlung. Es enthält eine Liste aller Ordner in einem Ordner. |
7 | TextStream TextStream ist ein Objekt. Es ermöglicht den Entwicklern, Textdateien zu lesen und zu schreiben. |
Fahrt
Driveist ein Objekt, das Zugriff auf die Eigenschaften eines bestimmten Laufwerks oder einer bestimmten Netzwerkfreigabe bietet. Folgende Eigenschaften werden unterstützt vonDrive Objekt -
- AvailableSpace
- DriveLetter
- DriveType
- FileSystem
- FreeSpace
- IsReady
- Path
- RootFolder
- SerialNumber
- ShareName
- TotalSize
- VolumeName
Beispiel
Step 1- Bevor Sie mit der Skripterstellung mit FSO fortfahren, sollten Sie Microsoft Scripting Runtime aktivieren. Navigieren Sie dazu zu Extras → Referenzen, wie im folgenden Screenshot gezeigt.
Step 2 - Fügen Sie "Microsoft Scripting RunTime" hinzu und klicken Sie auf OK.
Step 3 - Fügen Sie Daten hinzu, die Sie in eine Textdatei schreiben möchten, und fügen Sie eine Befehlsschaltfläche hinzu.
Step 4 - Jetzt ist es Zeit für das Skript.
Private Sub fn_write_to_text_Click()
Dim FilePath As String
Dim CellData As String
Dim LastCol As Long
Dim LastRow As Long
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim stream As TextStream
LastCol = ActiveSheet.UsedRange.Columns.Count
LastRow = ActiveSheet.UsedRange.Rows.Count
' Create a TextStream.
Set stream = fso.OpenTextFile("D:\Try\Support.log", ForWriting, True)
CellData = ""
For i = 1 To LastRow
For j = 1 To LastCol
CellData = Trim(ActiveCell(i, j).Value)
stream.WriteLine "The Value at location (" & i & "," & j & ")" & CellData
Next j
Next i
stream.Close
MsgBox ("Job Done")
End Sub
Ausgabe
Stellen Sie beim Ausführen des Skripts sicher, dass Sie den Cursor in der ersten Zelle des Arbeitsblatts platzieren. Die Datei Support.log wird wie im folgenden Screenshot unter "D: \ Try" gezeigt erstellt.
Der Inhalt der Datei wird im folgenden Screenshot gezeigt.
Schreibbefehl
Im Gegensatz zu FSO müssen wir KEINE Referenzen hinzufügen, können jedoch NICHT mit Laufwerken, Dateien und Ordnern arbeiten. Wir können den Stream einfach zur Textdatei hinzufügen.
Beispiel
Private Sub fn_write_to_text_Click()
Dim FilePath As String
Dim CellData As String
Dim LastCol As Long
Dim LastRow As Long
LastCol = ActiveSheet.UsedRange.Columns.Count
LastRow = ActiveSheet.UsedRange.Rows.Count
FilePath = "D:\Try\write.txt"
Open FilePath For Output As #2
CellData = ""
For i = 1 To LastRow
For j = 1 To LastCol
CellData = "The Value at location (" & i & "," & j & ")" & Trim(ActiveCell(i, j).Value)
Write #2, CellData
Next j
Next i
Close #2
MsgBox ("Job Done")
End Sub
Ausgabe
Beim Ausführen des Skripts wird die Datei "write.txt" am Speicherort "D: \ Try" erstellt, wie im folgenden Screenshot gezeigt.
Der Inhalt der Datei wird im folgenden Screenshot gezeigt.
Mit VBA können Sie Diagramme anhand bestimmter Kriterien erstellen. Schauen wir uns das anhand eines Beispiels an.
Step 1 - Geben Sie die Daten ein, anhand derer das Diagramm generiert werden soll.
Step 2 - Erstellen Sie drei Schaltflächen - eine zum Generieren eines Balkendiagramms, eine zum Generieren eines Kreisdiagramms und eine zum Generieren eines Säulendiagramms.
Step 3 - Entwickeln Sie ein Makro, um jedes dieser Diagrammtypen zu generieren.
' Procedure to Generate Pie Chart
Private Sub fn_generate_pie_graph_Click()
Dim cht As ChartObject
For Each cht In Worksheets(1).ChartObjects
cht.Chart.Type = xlPie
Next cht
End Sub
' Procedure to Generate Bar Graph
Private Sub fn_Generate_Bar_Graph_Click()
Dim cht As ChartObject
For Each cht In Worksheets(1).ChartObjects
cht.Chart.Type = xlBar
Next cht
End Sub
' Procedure to Generate Column Graph
Private Sub fn_generate_column_graph_Click()
Dim cht As ChartObject
For Each cht In Worksheets(1).ChartObjects
cht.Chart.Type = xlColumn
Next cht
End Sub
Step 4- Durch Klicken auf die entsprechende Schaltfläche wird das Diagramm erstellt. Klicken Sie in der folgenden Ausgabe auf die Schaltfläche Kreisdiagramm generieren.
EIN User Formist ein benutzerdefiniertes Dialogfeld, mit dem die Eingabe von Benutzerdaten für den Benutzer kontrollierbarer und benutzerfreundlicher wird. In diesem Kapitel lernen Sie, ein einfaches Formular zu entwerfen und Daten zu Excel hinzuzufügen.
Step 1- Navigieren Sie zum VBA-Fenster, indem Sie Alt + F11 drücken, und navigieren Sie zum Menü "Einfügen" und wählen Sie "Benutzerformular". Bei der Auswahl wird das Benutzerformular wie im folgenden Screenshot gezeigt angezeigt.
Step 2 - Entwerfen Sie die Formulare mit den angegebenen Steuerelementen.
Step 3- Nach dem Hinzufügen jedes Steuerelements müssen die Steuerelemente benannt werden. Die Beschriftung entspricht dem, was auf dem Formular angezeigt wird, und der Name entspricht dem logischen Namen, der angezeigt wird, wenn Sie VBA-Code für dieses Element schreiben.
Step 4 - Nachfolgend sind die Namen für jedes der hinzugefügten Steuerelemente aufgeführt.
Steuerung | Logischer Name | Bildbeschriftung |
---|---|---|
Von | frmempform | Mitarbeiterformular |
Mitarbeiter-ID-Etikettenfeld | empid | Mitarbeiter-ID |
Vorname Label Box | Vorname | Vorname |
Nachname Label Box | Familienname, Nachname | Familienname, Nachname |
dob Label Box | dob | Geburtsdatum |
mailid Label Box | Mailadresse | E-Mail-ID |
Passholder Label Label | Passinhaber | Passinhaber |
Emp ID Textfeld | txtempid | Unzutreffend |
Vorname Textfeld | txtfirstname | Unzutreffend |
Textfeld Nachname | txtlastname | Unzutreffend |
E-Mail-ID Textfeld | txtemailid | Unzutreffend |
Datums-Kombinationsfeld | cmbdate | Unzutreffend |
Monat Kombinationsfeld | cmbmonth | Unzutreffend |
Jahr Combo Box | cmbyear | Unzutreffend |
Ja Optionsfeld | Radioyes | Ja |
Kein Optionsfeld | Radiono | Nein |
Senden-Schaltfläche | btnsubmit | einreichen |
Schaltfläche Abbrechen | btncancel | Stornieren |
Step 5 - Fügen Sie den Code für das Formularladeereignis hinzu, indem Sie mit der rechten Maustaste auf das Formular klicken und "Code anzeigen" auswählen.
Step 6 - Wählen Sie "Benutzerformular" aus der Dropdown-Liste "Objekte" und wählen Sie die Methode "Initialisieren", wie im folgenden Screenshot gezeigt.
Step 7 - Stellen Sie beim Laden des Formulars sicher, dass die Textfelder gelöscht, die Dropdown-Felder ausgefüllt und die Optionsfelder zurückgesetzt sind.
Private Sub UserForm_Initialize()
'Empty Emp ID Text box and Set the Cursor
txtempid.Value = ""
txtempid.SetFocus
'Empty all other text box fields
txtfirstname.Value = ""
txtlastname.Value = ""
txtemailid.Value = ""
'Clear All Date of Birth Related Fields
cmbdate.Clear
cmbmonth.Clear
cmbyear.Clear
'Fill Date Drop Down box - Takes 1 to 31
With cmbdate
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
.AddItem "6"
.AddItem "7"
.AddItem "8"
.AddItem "9"
.AddItem "10"
.AddItem "11"
.AddItem "12"
.AddItem "13"
.AddItem "14"
.AddItem "15"
.AddItem "16"
.AddItem "17"
.AddItem "18"
.AddItem "19"
.AddItem "20"
.AddItem "21"
.AddItem "22"
.AddItem "23"
.AddItem "24"
.AddItem "25"
.AddItem "26"
.AddItem "27"
.AddItem "28"
.AddItem "29"
.AddItem "30"
.AddItem "31"
End With
'Fill Month Drop Down box - Takes Jan to Dec
With cmbmonth
.AddItem "JAN"
.AddItem "FEB"
.AddItem "MAR"
.AddItem "APR"
.AddItem "MAY"
.AddItem "JUN"
.AddItem "JUL"
.AddItem "AUG"
.AddItem "SEP"
.AddItem "OCT"
.AddItem "NOV"
.AddItem "DEC"
End With
'Fill Year Drop Down box - Takes 1980 to 2014
With cmbyear
.AddItem "1980"
.AddItem "1981"
.AddItem "1982"
.AddItem "1983"
.AddItem "1984"
.AddItem "1985"
.AddItem "1986"
.AddItem "1987"
.AddItem "1988"
.AddItem "1989"
.AddItem "1990"
.AddItem "1991"
.AddItem "1992"
.AddItem "1993"
.AddItem "1994"
.AddItem "1995"
.AddItem "1996"
.AddItem "1997"
.AddItem "1998"
.AddItem "1999"
.AddItem "2000"
.AddItem "2001"
.AddItem "2002"
.AddItem "2003"
.AddItem "2004"
.AddItem "2005"
.AddItem "2006"
.AddItem "2007"
.AddItem "2008"
.AddItem "2009"
.AddItem "2010"
.AddItem "2011"
.AddItem "2012"
.AddItem "2013"
.AddItem "2014"
End With
'Reset Radio Button. Set it to False when form loads.
radioyes.Value = False
radiono.Value = False
End Sub
Step 8- Fügen Sie nun den Code zur Schaltfläche Senden hinzu. Wenn Sie auf die Schaltfläche "Senden" klicken, sollte der Benutzer in der Lage sein, die Werte zum Arbeitsblatt hinzuzufügen.
Private Sub btnsubmit_Click()
Dim emptyRow As Long
'Make Sheet1 active
Sheet1.Activate
'Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
'Transfer information
Cells(emptyRow, 1).Value = txtempid.Value
Cells(emptyRow, 2).Value = txtfirstname.Value
Cells(emptyRow, 3).Value = txtlastname.Value
Cells(emptyRow, 4).Value = cmbdate.Value & "/" & cmbmonth.Value & "/" & cmbyear.Value
Cells(emptyRow, 5).Value = txtemailid.Value
If radioyes.Value = True Then
Cells(emptyRow, 6).Value = "Yes"
Else
Cells(emptyRow, 6).Value = "No"
End If
End Sub
Step 9 - Fügen Sie eine Methode zum Schließen des Formulars hinzu, wenn der Benutzer auf die Schaltfläche Abbrechen klickt.
Private Sub btncancel_Click()
Unload Me
End Sub
Step 10- Führen Sie das Formular aus, indem Sie auf die Schaltfläche "Ausführen" klicken. Geben Sie die Werte in das Formular ein und klicken Sie auf die Schaltfläche "Senden". Die Werte fließen automatisch in das Arbeitsblatt ein, wie im folgenden Screenshot gezeigt.