Laufzeitfehler 94 in Excel VBA beheben
Schritt-für-Schritt-Anleitung
-
Öffne deine Excel-Datei und gehe in den Visual Basic for Applications (VBA) Editor.
-
Suche die UserForm, die die ListBox enthält.
-
Überprüfe den Code im Ereignis ListBox1_Click. Er sollte in etwa so aussehen:
Private Sub ListBox1_Click()
Dim lng As Integer
Sheets("Quelle").Activate
lng = UserForm4.ListBox1.Column(4)
With UserForm4
TextBox1.Value = Cells(lng, 1).Value
End With
End Sub
-
Stelle sicher, dass die Spalte, die du aus der ListBox ausliest, korrekt ist. Wenn deine ListBox 4 Spalten hat, könnte es nötig sein, die Spalte auf Column(3) zu ändern, da die Zählung bei 0 beginnt.
lng = UserForm4.ListBox1.Column(3)
-
Eine alternative und häufig empfohlene Methode ist, die List-Eigenschafts-Werte auszulesen:
With UserForm4.ListBox1
lng = .List(.ListIndex, 3)
End With
-
Setze den Code für die TextBox entsprechend:
If ListBox1.ListIndex > 0 Then TextBox1.Value = Sheets("Quelle").Cells(ListBox1.ListIndex + 2, 1).Value
-
Teste den Code, indem du auf die ListBox klickst und überprüfe, ob der Wert in der TextBox korrekt angezeigt wird.
Häufige Fehler und Lösungen
-
Laufzeitfehler 94 "Unzulässige Verwendung von Null": Dieser Fehler tritt häufig auf, wenn du versuchst, auf einen Wert zuzugreifen, der nicht existiert. Überprüfe, ob die ListBox tatsächlich Werte enthält und ob die Spaltenindizes korrekt sind.
-
Laufzeitfehler 6 "Überlauf": Dieser Fehler kann auftreten, wenn du versuchst, einen Wert zu verwenden, der außerhalb des gültigen Bereichs liegt. Achte darauf, dass du den richtigen Index für die ListBox verwendest und dass es keine leeren Einträge gibt.
Alternative Methoden
Wenn die oben genannten Methoden nicht funktionieren, kannst du folgende Alternativen ausprobieren:
- Verwende eine
ComboBox anstelle einer ListBox, um die Auswahl zu vereinfachen.
- Erstelle eine separate Funktion, die den Wert aus der ListBox abruft, bevor du ihn in die TextBox schreibst.
Praktische Beispiele
Hier ist ein Beispiel, wie du den Code für die ListBox und die TextBox strukturieren kannst:
Private Sub ListBox1_Click()
Dim lng As Integer
If ListBox1.ListIndex <> -1 Then
lng = ListBox1.ListIndex + 2 ' Anpassung der Zeilenindex
TextBox1.Value = Sheets("Quelle").Cells(lng, 1).Value
End If
End Sub
In diesem Beispiel wird sichergestellt, dass nur ein gültiger ListIndex verwendet wird.
Tipps für Profis
- Nutze „Option Explicit“ am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind. Dies kann viele Fehler vermeiden.
- Verwende
Debug.Print oder MsgBox, um den Wert von Variablen während der Laufzeit zu überprüfen.
FAQ: Häufige Fragen
1. Was bedeutet Laufzeitfehler 94?
Dieser Fehler zeigt an, dass ein Nullwert verwendet wurde, wo ein gültiger Wert erwartet wurde. Überprüfe die Quellwerte in deiner ListBox.
2. Wie kann ich sicherstellen, dass die ListBox korrekt gefüllt ist?
Stelle sicher, dass die Daten in der Quelldatei vorhanden sind und dass der Code zum Füllen der ListBox korrekt ausgeführt wird. Teste dies, indem du den Code zur Füllung der ListBox schrittweise durchgehst.