VBA-Klassenmodule und deren Verwendung

Anonim

Was ist eine Klasse in VBA?

Eine Klasse ist eine Blaupause für ein zu erstellendes Objekt. Eine Klasse selbst macht nichts anderes, als mithilfe von Klassen mehrere identische Objekte zu erstellen, die Operationen ausführen oder als Datenressource verwendet werden können.

Im wirklichen Leben ist das Modell (Design und Funktionalitäten) eines Autos eine Klasse und das Auto selbst ist ein Objekt dieser Klasse. In der Klasse definieren wir, was das Auto in sich hat und was es kann. Ein Auto hat beispielsweise 4 Räder, 5 Gänge, Lenkrad usw. Dies sind Attribute/Eigenschaften. Wir definieren auch, was ein Auto tun kann, wie sich vorwärts, rückwärts, drehen usw. bewegen. Dies sind Funktionen der Autoklasse. Ein mit der Autoklasse erstelltes Autoobjekt verfügt über alle diese Eigenschaften. Wenn Sie ein Auto mit 5 Rädern definieren, hat ein mit dieser Klasse erstelltes Auto 5 Räder. Du verstehst den Punkt.

Genug der Theorie, jetzt sehen wir uns an, wie Sie ein Klassenmodul in VBA verwenden können.

Verwenden des Excel VBA-Klassenmoduls

Während Sie in VBA arbeiten, müssen Sie Range("A1").select verwendet haben. Der Bereich ist eine vordefinierte Klasse in VBA. Die Auswahl ist eine der Funktionen der Range-Klasse, die den angegebenen Bereich auswählt. In ähnlicher Weise ist Debug eine Klasse in VBA und print und assert sind seine Methoden. Worksheets, Workbooks, Range usw. sind alle VBA-Klassen, die wir in unseren Subs verwenden.

Erstelle deine eigene Klasse

Zuerst müssen wir ein Klassenmodul in VBA hinzufügen

Drücken Sie die Tastenkombination ALT+F11, um den Excel-VBA-Editor zu öffnen.

    • Klicken Sie mit der rechten Maustaste auf den Projektexplorer. Bewegen Sie den Cursor auf Einfügen --> Klassenmodul. Klick es an. Das gleiche kann über das Menü Einfügen erfolgen.

    • Die Klasse wird dem Ordner "Klassenmodul" hinzugefügt. Der Standardname lautet class1, class2 usw. Sie können den Klassennamen im Eigenschaftsfenster ändern. Nennen wir unsere Klasse "Willkommen".

  • Lassen Sie uns jetzt unserer Klasse einige Attribute hinzufügen. Da ich möchte, dass diese Attribute der Öffentlichkeit zugänglich sind, habe ich Verwendung Barrierefreiheit-Betreiber öffentlich.
    Öffentlicher Name As String Public var1 As Integer Public var2 As Integer 
  • Jetzt fügen wir dieser Klasse eine Funktion hinzu. Ich möchte eine Funktion, die Hallo sagt! an den Benutzer. Fügen Sie dazu ein Sub hinzu und nennen Sie es sayHiTo.
    Sub sayHiTo(user As String) name = user MsgBox ("Hi! " & name) End Sub 
  • Lassen Sie uns nun die Klasse in einem Modul verwenden. Fügen Sie ein neues Modul ein, wenn Sie noch keines haben. Schreiben Sie ein Sub. Ich habe meinen Untertest benannt.
    Sub test() Dim wc As New Welcome 'Deklariertes und initialisiertes Welcome-Objekt wc.sayHiTo ("Jack") 'benutzte die sayHiTo-Methode des Welcome-Objekts. End Sub 
  • Führen Sie diesen Untertest mit der Taste F5 aus. Es wird "Hi! Jack" in der Excel-Arbeitsmappe anzeigen.

Wie funktioniert es?

Im Untertest haben wir ein Objekt "WC" von . erstellt Willkommen Klasse. Ein Objekt wird in VBA auf zwei Arten erstellt. Wir führen den Code aus, Testsub erstellt ein Objekt WC der Welcome-Klasse. Dieses Objekt verfügt über alle Eigenschaften der Welcome-Klasse. Wir verwenden die sayHiTo-Methode der Welcome-Klasse, um den Benutzer zu begrüßen.

Objekterstellung in Excel VBA

    1. Sofortige Erstellung

Bei der Instant-Erstellung erstellen wir ein Objekt, während wir das Objekt mit dem "neuen" Schlüssel deklarieren. In unserem obigen Beispiel haben wir die sofortige Erstellung verwendet.

Dim WC Wie neu Willkommen

2. Verzögerte Erstellung
Bei der verzögerten Erstellung deklarieren wir zunächst nur das Objekt. Wir verwenden nicht das Schlüsselwort "neu". Um das Objekt zu verwenden, müssen wir es mit dem Schlüsselwort "new" initialisieren.

Sub test() Dim wc As Welcome 'wc.sayHiTo ("Jack") 'generiert einen Fehler, da wc noch nicht initialisiert ist 'initialisieren des Objekts Set wc = New Welcome wc.sayHiTo ("Cory") 'dies wird funktionieren. End Sub 

Auf Variablen einer Klasse zugreifen

In den obigen Beispielen haben wir öffentliche Variablen für die Klasse verwendet, aber es ist falsch zu praktizieren. Wir sollten vermeiden, öffentliche Variablen in einer Klasse zu verwenden. Nun stellt sich die Frage, wie wir auf Variablen der Klasse zugreifen würden. Früher haben wir eine Subroutine verwendet, um auf den Namen zuzugreifen, aber VBA-Klassen bieten Eigenschaften, die verwendet werden, um private Variablenwerte der Klasse systematisch zu aktualisieren und abzurufen. Die Eigenschaften sind eleganter als sub oder Funktion zum Aktualisieren und Zugreifen auf private Variablen. Mal sehen wie.

Syntax der Klasseneigenschaft

Privater Name As String Private var1 As Integer Private var2 As Integer Immobilienvermietung MyName(nm As String) name = nm End Property Eigenschaft Get MyName() As String MyName = name End Property 

Lassen Sie uns sie in einem Modul verwenden.

Sub test() 'Klassenobjekt erstellen Dim wc As New Welcome Dim wc1 As New Welcome 'mit den Eigenschaften wc.MyName = "Exceltip.com" wc1.MyName = "ExcelForum.com" Debug.Print wc.MyName Debug.Print wc1. MyName End Sub 

Wenn Sie dieses Test-Sub ausführen, werden zwei Namen für zwei Objekte der Klasse "Welcome" gedruckt.

Wie sich Eigenschaften von Unter- und Funktionen unterscheiden

Beachten Sie, dass wir im obigen Beispiel die Eigenschaft MyName als Variable verwendet haben. Wir haben den Wert der Variablen "Name" nur durch Schreiben initialisiert wc.MyName="assdf". Diese Befehlszeile nannte die Eigenschaft namensEigenschaft Get MyName() As String. Wir haben keinen Wert in Klammern übergeben, wie wir es am Anfang getan haben.

Um die Werte der Variablen "Name" zu drucken, haben wir den Befehl verwendetDebug.Print wc.MyName. Ist es nicht so einfach wie die normale Variableninitialisierung? Der einzige Unterschied ist, dass Sie imEigentum Segment. Sie geben Datenvalidierung, Berechnung, Kommunikation usw. ein und der Benutzer sieht nur das Ergebnis.

Ein weiterer Unterschied besteht darin, dass wir denselben Namen der Eigenschaft verwenden können, um Lassen und werdenTeil. Das macht es einfacher und weniger verwirrend.

Also ja, Leute, dies war ein einfaches Beispiel für ein Klassenmodul in Excel VBA. Dies ist nur die Spitze des Eisbergs, es gibt viel Saft in diesem Thema, das wir in späteren Artikeln untersuchen werden. Wir werden jeden von ihnen einzeln auf die einfachste Weise erkunden. Ich hoffe, ich war erklärend genug, um Ihnen das verständlich zu machen. Wenn Sie Zweifel an diesem Thema oder einem anderen Excel-VBA-Thema haben, erwähnen Sie dies im Kommentarbereich unten.

Importieren eines Moduls aus einer Datei mit VBA in Microsoft Excel | Erfahren Sie, wie Sie mit VBA das gesamte Modul aus einer anderen Datei importieren.

Erstellen Sie ein neues Modul mit VBA in Microsoft Excel | Sie können ein Modul verwenden, um ein weiteres Modell in VBA zu erstellen. Dies kann Ihnen helfen, den zusätzlichen Overhead zu minimieren.

Hinzufügen einer Prozedur zu einem Modul mithilfe von VBA in Microsoft Excel | Um Prozeduren zu Modulen automatisch hinzuzufügen, verwenden Sie diesen VBA-Code.

Populäre Artikel:

50 Excel-Kurzbefehle zur Steigerung Ihrer Produktivität | Werden Sie schneller bei Ihrer Aufgabe. Mit diesen 50 Tastenkombinationen arbeiten Sie noch schneller mit Excel.

Die SVERWEIS-Funktion in Excel | Dies ist eine der am häufigsten verwendeten und beliebtesten Funktionen von Excel, die verwendet wird, um Werte aus verschiedenen Bereichen und Blättern zu suchen.

ZÄHLENWENN in Excel 2016 | Zählen Sie Werte mit Bedingungen mit dieser erstaunlichen Funktion. Sie müssen Ihre Daten nicht filtern, um einen bestimmten Wert zu zählen. Die Countif-Funktion ist unerlässlich, um Ihr Dashboard vorzubereiten.

So verwenden Sie die SUMIF-Funktion in Excel | Dies ist eine weitere wesentliche Funktion des Dashboards. Dies hilft Ihnen, Werte unter bestimmten Bedingungen zusammenzufassen.