Excel VBA-Kurs (6): Grundlagen der Excel VBA-Sprache – Variablen

In diesem Artikel betrachten wir den Inhalt von Variablen unter den Grundlagen der Excel-VBA-Sprache.

Dies ist eine Fortsetzung des vorherigen Artikels.

Excel VBA-Kurs (5): Excel-Dateierweiterung, VBE, Schrifteinstellungen

3. Grundlagen der Excel-VBA-Sprache

3.1. Variable

Untersuchen Sie Variablendeklaration und Bindungsmethoden.

3.1.1. variable Aussage

Deklarieren Sie eine Variable mit der folgenden Syntax:

'변수 선언 문법
Dim <변수명> [As Type]

In Visual Basic können Sie eine Variable verwenden, ohne sie zu deklarieren, und selbst wenn Sie sie deklarieren, dürfen Sie den Typ nicht angeben.

Dim t, x

Wie oben gibt es kein Problem, wenn Sie den Typ nicht angeben, während Sie die t- und x-Variablen deklarieren.

Um jedoch die Möglichkeit von Fehlern oder Bugs zu reduzieren und den Code besser lesbar zu machen, wird empfohlen, Folgendes zu beachten.

  • Variablen müssen deklariert und verwendet werden. (Option Explizit empfohlen)
  • Auch der Typ muss angegeben werden.
  • Auf den Variablennamen wird die ungarische Notation angewendet, die die Abkürzung des Typs als Präfix verwendet, damit der Typ leicht erkannt werden kann.

'문자열 Title
Dim sTitle As String
  • Die Verwendung koreanischer Schriftzeichen für Namen wie Variablennamen, Prozedurnamen und Funktionsnamen stellt überhaupt kein Problem dar. Wenn die Entscheidung für einen Variablennamen schwierig ist oder die Lesbarkeit verbessert werden soll, verwenden Sie aktiv koreanische Namen.

Die hauptsächlich verwendeten Typen und Präfixe sind wie folgt.

PräfixArtLängeBezug
sSchnur10 + SaitenlängeEtwa 2 Milliarden Zeichen können ausgedrückt werden
ichGanze Zahl2 ByteSchwellenwerte: -32.768 bis 32.767
lLang4 BytesGrenzen: -2.147.483.648 bis 2.147.483.647
bBoolesch2 ByteWahr falsch
ÖObjekt Objekte wie Arbeitsmappe, Arbeitsblatt, Bereich und Sammlung
Visual Basic-Hauptvariablentyp, Präfix

Ein Beispiel für die Deklaration einer Variablen mit dem obigen Präfix ist wie folgt.

Dim s단어 As String
Dim b단어발견 As Boolean
Dim oTargetBook As Workbook
Dim oTargetSht As Worksheet

3.1.2. Variablen Frühe Bindung, Späte Bindung

Die Methode, bei der der Variablentyp bei der Deklaration bestimmt wird, heißt Early Binding, und die Methode, bei der er bei der Ausführung bestimmt wird, heißt Late Binding. Die Konzepte, Beispiele, Empfehlungen, Vor- und Nachteile der beiden Methoden sind in der folgenden Tabelle zusammengefasst.

EinteilungFrühe BindungSpäte Bindung
KonzeptSo geben Sie einen Typ an, wenn Sie eine Variable deklarieren
Wenn es sich nicht um einen integrierten Typ handelt, fügen Sie einen Verweis auf diesen Typ hinzu und geben Sie den Typ an
Wie Typen zur Ausführungszeit angegeben werden
BeispielSchwaches Schwert als Schnur
Dim oRecordSet As ADO.RecordSet
Schwaches Schwert
Dim oRecordSet als Objekt
EmpfehlungenIn den meisten Fällen empfohlenNur verwenden, wenn es absolut notwendig ist
(nur auf Objekttyp beschränkt)
VorteileAutomatische Vervollständigung beim Schreiben von Code, dynamische Hilfeunterstützung (bequem)
Da der Typ zur Kompilierzeit bestimmt wird, ist dies für die Leistung vorteilhaft.
Wenn im laufenden Computer keine Referenzbibliothek vorhanden ist, wird nur der spät gebundene Codeteil nicht ausgeführt.
NachteileWenn im laufenden Computer keine Referenzbibliothek vorhanden ist, wird das Ganze nicht ausgeführtAutomatische Vervollständigung wird beim Schreiben von Code nicht unterstützt (umständlich)
Die Leistung ist relativ schlecht, da der Typ zur Ausführungszeit bestimmt und dynamisch gebunden wird.
Variable Early-Binding-, Late-Binding-Vergleich

* Bezug: https://docs.microsoft.com/en-us/previous-versions/office/troubleshoot/office-developer/binding-type-available-to-automation-clients

Sehen wir uns Beispielcode für jede Methode an. Dies ist ein einfacher Code, der Empfänger, Betreff und Inhalt einer E-Mail mit Outlook erstellt und auf dem Bildschirm anzeigt.

Frühe Bindung vs. Beispielcode für späte Bindung

Der Beispielcode der frühen Bindungsmethode lautet wie folgt.

Sub SendOLMail_EarlyBound()
    ​​​​​' declare variables for the Application and Mailitem objects
    ​​​​Dim oAPP                       As Outlook.Application
    ​​​​Dim oItem                      As Outlook.MailItem
     
    ​​​​​' instantiate the Application
    ​​​​Set oAPP = New Outlook.Application
     
    ​​​​​' create a new email
    ​​​​Set oItem = oAPP.CreateItem(olMailItem)
     
    ​​​​​' set basic properties and display the email
    ​​​​With oItem
        ​​​​​​​​​.To = "foo@bar.com"
        ​​​​​​​​​.Subject = "this is a test"
        ​​​​​​​​​.Body = "nothing to see here"
        ​​​​​​​​​.Display
    ​​​​​End With
End Sub

Die Variablen oApp und oItem wurden bei der Deklaration als Outlook.Application-Typ bzw. Outlook.MailItem-Typ bezeichnet. In diesem Fall müssen Sie wie folgt einen Verweis auf die Outlook-Bibliothek hinzufügen.

필요한 type library 참조 추가
Fügen Sie erforderliche Typbibliotheksreferenzen hinzu

Öffnen Sie das Menü „VBE > Tools > Referenzen“, aktivieren Sie „Microsoft Outlook 16.0-Objektbibliothek“ unter „Verfügbare Referenzen“ und klicken Sie auf die Schaltfläche „OK“.

Wenn Sie das Referenzmenü erneut öffnen, sollte es so aussehen:

type library 참조 추가 확인
Aktivieren Sie das Hinzufügen einer Typbibliotheksreferenz

Wenn Sie die Makrodatei (.xlsm oder .xlsb), in der dieser VBA-Code gespeichert ist, auf einen PC kopieren, auf dem Outlook 16 nicht installiert ist, und sie ausführen, tritt eine Fehlermeldung auf, dass der Typ nicht gefunden werden kann.

Ein Beispielcode für die späte Bindungsmethode lautet wie folgt.

Sub SendOLMail_LateBound()
    ​​​​​Dim oAPP                       As Object
    ​​​​​Dim oItem                      As Object
    ​​​​​' need to declare this constant as it has no meaning without
    ​​​​' the reference set to the Outlook library
    ​​​​Const olMailItem               As Long = 0

    ​​​​​' instantiate the Application - cannot use New without a reference
    ​​​​' so we must use CreateObject
    ​​​​Set oAPP = CreateObject("Outlook.Application")

    ​​​​'이후 코드는 동일
    ​​​​​' create a new email
    ​​​​Set oItem = oAPP.CreateItem(olMailItem)

    ​​​​​' set basic properties and display the email
    ​​​​With oItem
        ​​​​​​​​​.To = "foo@bar.com"
        ​​​​​​​​​.Subject = "this is a test"
        ​​​​​​​​​.Body = "nothing to see here"
        ​​​​​​​​​.Display
    ​​​​​End With
End Sub

Die Variablen oApp und oItem werden zum Zeitpunkt der Deklaration als Objekttyp bezeichnet, und die Objekterstellungsmethode ist unterschiedlich.

Erstellen Sie ein Objekt mit dem folgenden Code in Zeile 10.

Set oAPP = CreateObject(“Outlook.Application”)

Eine ausführliche Beschreibung der CreateObject-Funktion finden Sie unter der folgenden URL.

https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/createobject-function

Einige Auszüge aus der obigen URL bleiben zurück.


Syntax

CreateObject(Klasse, [Servername])

Die CreateObject Funktionssyntax hat diese Teile:

TeilBeschreibung
KlasseErforderlich; Variante (Schnur). Der Anwendungsname und die Klasse des zu erstellenden Objekts.
ServernameOptional; Variante (Schnur). Der Name des Netzwerkservers, auf dem das Objekt erstellt wird. Wenn Servername eine leere Zeichenfolge („“) ist, wird der lokale Computer verwendet.

Die Klasse Streit verwendet die Syntax appname.objecttype und hat diese Teile:

TeilBeschreibung
App NameErforderlich; Variante (Schnur). Der Name der Anwendung, die das Objekt bereitstellt.
ObjekttypErforderlich; Variante (Schnur). Der Typ bzw Klasse des zu erstellenden Objekts.

Wenn Sie die Makrodatei (.xlsm oder .xlsb), in der dieser VBA-Code gespeichert ist, auf einen PC kopieren, auf dem Outlook 16 nicht installiert ist, und ausführen, tritt wie bei der frühen Bindung ein Fehler auf, dass der Typ nicht gefunden werden kann. Der Unterschied besteht darin, dass bei der Early-Binding-Methode nicht alle Codes von Anfang an ausgeführt werden, wenn keine Referenzbibliothek vorhanden ist, und bei der Late-Binding-Methode andere Codes ausgeführt werden und nur die Codes (Prozeduren, Funktionen) einschließlich CreateObject nicht ausgeführt werden.


Bisher haben wir Variablendeklarationen und Bindungsmethoden betrachtet. Als nächstes werde ich die Syntax der VBA-Sprache erklären.


<<Verwandte Artikelliste >>

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEDeutsch