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.