Inputbox in Excel VBA richtig handhaben
Schritt-für-Schritt-Anleitung
Um eine Inputbox in Excel VBA zu verwenden und sicherzustellen, dass der Benutzer keine fehlerhaften Eingaben macht oder die Eingabe abbricht, kannst Du folgende Schritte befolgen:
-
Erstelle eine Sub-Prozedur:
Sub SortiereBereichNachEinerSpalte()
-
Deklariere Variablen:
Dim ws As Worksheet
Dim rSearch As Range
Dim Eingabe As String
Dim iNumberOfSortingColumn As Integer
-
Definiere Konstanten:
Const strWsName = "list"
Const strSearchRng = "B2:CA2000"
-
Füge die Inputbox hinzu:
Eingabe = InputBox("Bitte geben Sie die Spaltennummer ein, nach der Sie sortieren möchten!")
-
Überprüfe die Eingabe:
If Eingabe = "" Then
MsgBox "Abgebrochen durch den Anwender"
Exit Sub
ElseIf Not IsNumeric(Eingabe) Then
MsgBox "Die Eingabe war keine Zahl!"
Exit Sub
Else
iNumberOfSortingColumn = CInt(Eingabe)
End If
-
Führe die Sortierung durch:
Set ws = Sheets(strWsName)
Set rSearch = ws.Range(strSearchRng)
rSearch.Sort Key1:=rSearch.Cells(iNumberOfSortingColumn), Order1:=xlAscending
-
Schütze das Blatt wieder:
ActiveSheet.Protect AllowFormattingColumns:=True
End Sub
Häufige Fehler und Lösungen
-
Laufzeitfehler bei leeren Eingaben: Wenn der Benutzer die Inputbox ohne Eingabe schließt, wird eine leere Zeichenkette zurückgegeben. Dies kann zu einem Laufzeitfehler führen, wenn Du versuchst, diese in einen Integer umzuwandeln. Überprüfe die Eingabe mit If Eingabe = "" Then
.
-
Eingabe von ungültigen Zeichen: Wenn der Benutzer einen Buchstaben eingibt, musst Du sicherstellen, dass die Eingabe numerisch ist. Verwende IsNumeric(Eingabe)
.
-
Typkonvertierungsfehler: Stelle sicher, dass Du die Eingabe zuerst als String speicherst und erst danach in den gewünschten Datentyp umwandelst.
Alternative Methoden
Eine alternative Methode zur Verwendung der Inputbox ist die Application.InputBox
, die mehr Kontrolle über den Datentyp der Eingabe bietet. Hier ein Beispiel:
Dim Eingabe As Variant
Eingabe = Application.InputBox("Bitte geben Sie eine Zahl ein", Type:=1) 'Type 1 für numerische Eingabe
If Eingabe = False Then
MsgBox "Abgebrochen angeklickt"
Exit Sub
End If
Diese Methode gibt False
zurück, wenn der Benutzer auf "Abbrechen" klickt, was die Handhabung erleichtert.
Praktische Beispiele
Hier sind einige praktische Beispiele zur Verwendung von Inputboxen in Excel VBA:
-
Eingabe einer Zahl oder Text:
Dim strEingabe As String
strEingabe = InputBox("Geben Sie einen Text oder eine Zahl ein")
If IsNumeric(strEingabe) Then
MsgBox "Eingegebene Zahl: " & strEingabe
ElseIf strEingabe = "" Then
MsgBox "Nichts eingegeben"
End If
-
Sortierung mit Benutzerinput:
Verwende das Beispiel aus der Schritt-für-Schritt-Anleitung, um eine Sortierung basierend auf der Benutzereingabe durchzuführen.
Tipps für Profis
-
Verwende VarType
für Typüberprüfungen: Statt einfach auf False
zu prüfen, kannst Du VarType
verwenden, um sicherzustellen, dass die Eingabe tatsächlich von dem erwarteten Typ ist.
-
Inputbox für spezifische Datentypen: Nutze Application.InputBox
mit dem Type
-Parameter, um die Eingabe auf einen bestimmten Datentyp zu beschränken.
-
Vermeide globale Variablen: Halte Deine Variablen lokal, um die Übersichtlichkeit zu erhöhen und unerwartete Fehler zu minimieren.
FAQ: Häufige Fragen
1. Wie kann ich eine Inputbox abbrechen?
Wenn der Benutzer auf "Abbrechen" klickt, gibt die Inputbox eine leere Zeichenkette oder False
zurück, abhängig von der verwendeten Methode.
2. Was passiert, wenn ich ungültige Eingaben mache?
Wenn die Eingabe nicht konvertierbar ist (z.B. ein Buchstabe statt einer Zahl), wird ein Laufzeitfehler auftreten, es sei denn, Du hast eine Prüfung eingebaut.
3. Kann ich die Inputbox anpassen?
Die Standard-Inputbox kann nicht angepasst werden. Für Anpassungen solltest Du UserForms verwenden.