Es gibt verschiedene Möglichkeiten, einen Zähler in einem VBA -Projekt für Excel zu implementieren, abhängig vom Umfang und Zweck des Zählers. Hier sind einige Ansätze:
1. Verwenden einer Variablen auf Modulebene:
Dies ist der einfachste Ansatz für einen globalen Zähler, der während der gesamten VBA -Sitzung bestehen (bis die Excel -Datei geschlossen ist).
`` `vba
Option explizit
Privatschalter als lange deklarieren Sie die Zählervariable
Sub -IncrementCounter ()
Zähler =Zähler + 1
MSGBox "Zählerwert:" &Zähler
Ende sub
Sub Resetcounter ()
Zähler =0
MSGBox "Zähler Reset auf 0"
Ende sub
`` `
* `Option explizit": Dies ist entscheidend für gute Codierungspraktiken. Es zwingt Sie, alle Variablen explizit zu deklarieren.
* `Privat Zähler AS Long`: Dies deklariert eine Variable mit dem Namen "Zähler" vom Typ "long" (eine lange ganze Zahl), die größere Zahlen als "Integer" enthalten kann. Das Schlüsselwort "privat" macht es nur innerhalb des Moduls zugänglich, in dem es deklariert ist.
* `IncrementCounter` und` ResetCounter` subroutinen: Diese zeigen, wie der Zähler inkrementiert und zurückgesetzt werden kann.
2. Verwenden einer Arbeitsblattzelle als Zähler:
Diese Methode speichert den Zähler in einer bestimmten Zelle in einem Arbeitsblatt. Der Zähler bleibt auch dann bestehen, wenn Excel geschlossen und wiedereröffnet wird (es sei denn, der Zellwert wird manuell geändert).
`` `vba
Sub -Incrementworksheetcounter ()
Dim WS als Arbeitsblatt
Setzen Sie WS =Thisworkbook.sheets ("Sheet1") '"Sheet1" in Ihren Blattnamen
Ws.Range ("a1"). value =ws.Range ("a1"). Wert + 1 'erhöhen Sie den Zähler in Zelle A1
MSGBox "Zählerwert:" &Ws.Range ("A1"). Wert
Ende sub
Sub Resetworksheetcounter ()
Dim WS als Arbeitsblatt
Setzen Sie WS =Thisworkbook.sheets ("Sheet1") '"Sheet1" in Ihren Blattnamen
Ws.Range ("a1"). value =0
MSGBox "Zähler Reset auf 0"
Ende sub
`` `
* Dieser Ansatz ist anhaltender als eine Variable auf Modulebene, stützt sich jedoch auf einer bestimmten Zelle und ist daher aus einer rein vba-Perspektive weniger sauber.
3. Verwenden eines Klassenmoduls für einen eingekapselten Zähler:
Dies ist ein fortschrittlicherer Ansatz, der eine bessere Organisation und Wiederverwendbarkeit bietet. Ein Klassenmodul erstellt ein benutzerdefiniertes Objekt, das die Daten und Methoden des Zählers zusammenfasst.
`` `vba
'In einem Klassenmodul (z. B. mit dem Namen "Gegenklasse")
Option explizit
Privates Gegenwert so lange
Öffentliches Eigentum bekommen Counter () so lange
Gegenwert =Gegenwert
Beenden Sie Eigentum
Öffentliche Sub -Inkrement ()
Gegenwert =Gegenwert + 1
Ende sub
Öffentlicher Sub Reset ()
Gegenwert =0
Ende sub
'In einem Standardmodul
Sub UsecounterClass ()
Dunkelne Mycounter als Gegenklasse
MyCounter =neue Gegenklasse setzen
mycounter.increment
Debug.print "Zählerwert:" &mycounter.counter
mycounter.increment
Debug.print "Zählerwert:" &mycounter.counter
mycounter.reset
Debug.print "Zählerwert:" &mycounter.counter
Setzen Sie MyCounter =Nothing 'Wichtig:das Objekt aus dem Speicher loslassen
Ende sub
`` `
* Klassenmodul Vorteile: Bessere Codeorganisation, Wiederverwendbarkeit (Sie können mehrere Gegenobjekte erstellen) und das Verstecken von Daten (das "Gegenwert" ist privat).
den richtigen Ansatz auswählen:
* Variable auf Modulebene: Das einfachste für einen einzelnen, vorübergehenden Zähler innerhalb einer einzelnen VBA -Sitzung.
* Arbeitsblattzelle: Am besten für die Persistenz über Excel -Sitzungen, aber weniger elegant aus kodierender Sicht.
* Klassenmodul: Am besten für komplexe Szenarien, mehrere Zähler oder wenn Sie eine bessere Codeorganisation und Wiederverwendbarkeit benötigen. Dies ist im Allgemeinen der empfohlene Ansatz für alles, was über einen sehr einfachen Zähler hinausgeht.
Denken Sie daran, `" Blatt1 "durch den tatsächlichen Namen Ihres Arbeitsblatts zu ersetzen, wenn Sie die Arbeitsblattzellmethode verwenden. Wählen Sie den Ansatz aus, der Ihren Anforderungen und Codierungsstil am besten entspricht. Für die meisten Anwendungen, die über einfache Zähler hinausgehen, wird die Verwendung eines Klassenmoduls für eine bessere Organisation und Wartbarkeit dringend empfohlen.