gibt es einen Befehl, mit dem ich vor "Exit Sub" alle Variablenwerte wieder leeren kann, damit diese bei erneutem Makroaufruf wieder neu belegt werden?
Vielen Dank und schöne Grüße,
Jo
... Ich vermute Du definierst nicht im Makro sondern vor dem Makro.
und dann bleiben die Werte natürlich erhalten, weil sie ja noch anderen Markos zur verfügung stehen sollen.
zurückgesetzt werden diese Werte nur, wenn das Makro mit einem Fehler abbricht.
dh. die Variablendeklaration muss innerhalb des Makros erfolgen.
oder du musst die Werte beim Makrostart (oder Ende) expizip per einzelanweisung wieder auf den gewünschten Startwert setzen.
Gruß Daniel
Variablen im Makro definieren: Stelle sicher, dass Du alle Variablen innerhalb des Makros definierst. Verwende dazu Dim
, um die Variablen zu deklarieren. Beispiel:
Dim myVariable As String
UserForm schließen: Wenn Du eine UserForm verwendest, schließe diese mit Unload Me
, um sicherzustellen, dass alle Variablenwerte zurückgesetzt werden. Vermeide Me.Hide
, da dies die Variablenwerte nicht leert.
Variablen manuell zurücksetzen: Falls notwendig, setze die Variablenwerte manuell auf den gewünschten Startwert, bevor Du Exit Sub
aufrufst. Beispiel:
myVariable = ""
Variablen werden nicht zurückgesetzt: Stelle sicher, dass Du die Variablen innerhalb des Makros definierst. Wenn sie vor dem Makro definiert wurden, bleiben die Werte erhalten.
UserForm wird nicht korrekt geschlossen: Verwende Unload Me
, um sicherzustellen, dass alle Variablen geleert werden.
Reset durch Fehler: Wenn das Makro aufgrund eines Fehlers abbricht, werden die Variablen automatisch zurückgesetzt. Dies ist eine weniger kontrollierbare Methode.
Array-Felder leeren: Für Array-Felder kannst Du den Befehl Erase ArrayName
verwenden, um alle Werte auf einmal zu löschen.
Hier ein einfaches Beispiel, wie Du Variablen in einem VBA-Makro leeren kannst:
Sub BeispielMakro()
Dim myString As String
Dim myArray(1 To 10) As Integer
' Benutzeranfrage
myString = InputBox("Gib einen Wert ein:")
' UserForm schließen
Unload Me
' Leeren der Variablen
myString = ""
Erase myArray
End Sub
Systematische Struktur: Halte eine klare Struktur in Deinem Code, indem Du alle Variablen am Anfang des Makros definierst. Dies erleichtert das spätere Zurücksetzen.
Verwendung von Option Explicit
: Setze Option Explicit
an den Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert werden, bevor sie verwendet werden.
1. Gibt es einen Befehl, um alle Variablenwerte zurückzusetzen?
Leider gibt es in VBA keinen Befehl, der alle Variablenwerte auf einmal leert. Du musst dies für jede Variable einzeln tun.
2. Was ist der Unterschied zwischen Unload Me
und Me.Hide
?
Unload Me
entfernt die UserForm aus dem Speicher und setzt alle Variablen zurück, während Me.Hide
die Form nur verbirgt, was bedeutet, dass die Variablen weiterhin bestehen bleiben.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen