Makro mit InputBox abbrechen in Excel VBA
Schritt-für-Schritt-Anleitung
-
VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.
-
Modul erstellen: Klicke mit der rechten Maustaste auf „VBAProject (dein Arbeitsblattname)“, wähle „Einfügen“ und dann „Modul“.
-
Code eingeben: Füge den folgenden Code in das Modul ein:
Sub FindenEinfuegen()
Dim wks(1 To 2) As Worksheet
Dim rng As Range
Dim dInput As Variant ' Ändere hier den Datentyp
Dim iWks As Integer
Dim sRng As String
Worksheets("Deckblatt").Select
Application.ScreenUpdating = False
Set wks(1) = Worksheets("Tabelle1")
Set wks(2) = Worksheets("Tabelle2")
dInput = Application.InputBox( _
prompt:="Geben Sie eine Variante ein:", _
Title:="Versuchsglieder", _
Type:=1)
If dInput = vbNullString Then Exit Sub ' Abbrechen abfangen
For iWks = 1 To 2
Set rng = wks(iWks).Cells.Find(dInput, lookat:=xlWhole, LookIn:=xlValues)
If Not rng Is Nothing Then
sRng = rng.Address
rng.Offset(1, 0).EntireRow.Insert
Do
Set rng = wks(iWks).Cells.FindNext(rng)
If rng.Address <> sRng Then
rng.Offset(1, 0).EntireRow.Insert
Else
Exit Do
End If
Loop
End If
Next iWks
End Sub
-
Makro ausführen: Schließe den VBA-Editor und führe das Makro über ALT + F8 aus.
Häufige Fehler und Lösungen
-
Fehler: Das Makro wird nicht abgebrochen, wenn die InputBox geschlossen wird.
- Lösung: Stelle sicher, dass du den Datentyp von
dInput auf Variant änderst. So kannst du sowohl Zahlen als auch den Rückgabewert False abfangen.
-
Fehler: Die InputBox gibt einen unerwarteten Wert zurück.
- Lösung: Überprüfe, ob du die richtige
Type-Nummer in der InputBox-Funktion verwendest. Der Typ 1 bedeutet, dass nur Zahlen erwartet werden.
Alternative Methoden
Eine alternative Methode zur Verwendung der InputBox könnte die Verwendung eines Formulars (UserForm) sein, das mehr Flexibilität bietet, um Eingaben zu erhalten und die Abbrechen-Schaltfläche zu handhaben. Mit einer UserForm kannst du die Abbruchbedingungen besser gestalten und das Benutzererlebnis verbessern.
Praktische Beispiele
Hier ist ein einfaches Beispiel, das zeigt, wie du die InputBox verwenden kannst, um Benutzereingaben zu erhalten und das Makro bei Bedarf abzubrechen:
Sub BeispielInputBox()
Dim userInput As Variant
userInput = Application.InputBox("Bitte eine Zahl eingeben:", "Eingabe")
If userInput = False Then
MsgBox "Aktion abgebrochen", vbInformation
Exit Sub
End If
MsgBox "Eingegebene Zahl: " & userInput
End Sub
In diesem Beispiel wird das Makro abgebrochen, wenn der Benutzer auf die Abbrechen-Schaltfläche klickt.
Tipps für Profis
- Verwende
On Error Resume Next, um Fehler durch ungültige Eingaben zu handhaben.
- Integriere eine Benutzerführung in deine InputBox, um den Benutzern zu helfen, was genau eingegeben werden soll.
- Teste deine Makros gründlich, um sicherzustellen, dass alle Eingaben korrekt verarbeitet werden.
FAQ: Häufige Fragen
1. Wie kann ich sicherstellen, dass die InputBox immer einen gültigen Wert zurückgibt?
Du kannst eine Schleife verwenden, um die Eingabe zu wiederholen, solange der Benutzer keinen gültigen Wert eingibt.
2. Was passiert, wenn der Benutzer die InputBox schließt, ohne etwas einzugeben?
Die InputBox gibt False zurück, wenn der Benutzer auf Abbrechen klickt. Stelle sicher, dass du dies in deiner Abfrage überprüfst, um das Makro abzubrechen.