Mit VBA und InputBox in Excel nach Werten in einer Spalte suchen
Schritt-für-Schritt-Anleitung
-
Öffne Excel und drücke ALT + F11
, um den VBA-Editor zu öffnen.
-
Füge ein neues Modul hinzu:
- Klicke im Menü auf
Einfügen
> Modul
.
-
Kopiere den folgenden Code in das Modul:
Sub BuchnummerSuchen()
Dim zelle As Range
Dim vBuchnummer As String
On Error GoTo ErrHandler
vBuchnummer = InputBox("Geben Sie die Buchnummer ein: ", "Titel")
For Each zelle In Range("A1:A200") 'Hier musst du den Bereich anpassen
If zelle.Value = vBuchnummer Then
Range("E" & zelle.Row).Value = "x"
Exit Sub
End If
Next zelle
MsgBox "Buchnummer nicht gefunden!", vbExclamation, "Titel"
Exit Sub
ErrHandler:
MsgBox "Ein Fehler ist aufgetreten.", vbCritical, "Fehler"
End Sub
-
Anpassen des Bereichs: Stelle sicher, dass Du den Bereich in der For-Schleife (A1:A200
) anpasst, um die gewünschten Zellen zu durchsuchen.
-
Führe das Makro aus: Gehe zurück zu Excel und drücke ALT + F8
, wähle BuchnummerSuchen
und klicke auf Ausführen
.
Häufige Fehler und Lösungen
-
Problem: Die MsgBox erscheint, obwohl die Buchnummer vorhanden ist.
- Lösung: Stelle sicher, dass Du den
LookAt
-Parameter korrekt setzt. In der oben angegebenen Lösung wird der exakte Wert gesucht. Wenn Du teilweise Übereinstimmungen möchtest, ändere LookAt:=xlWhole
auf LookAt:=xlPart
.
-
Problem: Der Wert wird nicht in Spalte E geschrieben.
- Lösung: Vergewissere Dich, dass Du
Range("E" & zelle.Row).Value = "x"
korrekt angibst. Hier wird die Zeilennummer der gefundenen Zelle verwendet.
Alternative Methoden
Eine andere Methode, um Excel VBA zu nutzen, um in einer Spalte zu suchen, besteht darin, die Find
-Methode zu verwenden. Hier ist ein Beispiel:
Sub SuchenMitFind()
Dim c As Range
Dim suchBegriff As String
suchBegriff = InputBox("Buchnummer eingeben")
Set c = ActiveSheet.Range("A:A").Find(suchBegriff, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
c.Offset(0, 4).Value = "x"
Else
MsgBox "Buchnummer nicht vorhanden!"
End If
End Sub
Dieser Code sucht effizient in der gesamten Spalte A und kann leicht angepasst werden.
Praktische Beispiele
Wenn Du Telefonnummern rückwärts suchen möchtest, kannst Du die StrReverse
-Funktion verwenden, um die Eingabe umzudrehen, bevor Du nach ihr suchst. Hier ein Beispiel:
Sub TelefonNummerSuchen()
Dim c As Range
Dim suchBegriff As String
suchBegriff = StrReverse(InputBox("Geben Sie die Telefonnummer ein: "))
Set c = ActiveSheet.Range("A:A").Find(suchBegriff, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
c.Offset(0, 4).Value = "x"
Else
MsgBox "Telefonnummer nicht vorhanden!"
End If
End Sub
Tipps für Profis
- Verwende Fehlerbehandlung in Deinen Makros, um unerwartete Probleme zu vermeiden. Nutze
On Error GoTo ErrHandler
und spezifiziere, was geschehen soll, wenn ein Fehler auftritt.
- Halte Deine Makros modular. Teile komplexe Aufgaben in kleinere Subroutinen auf, um die Wartbarkeit zu erhöhen.
- Experimentiere mit Datenvalidierung, um sicherzustellen, dass nur gültige Buchnummern eingegeben werden.
FAQ: Häufige Fragen
1. Wie kann ich den gesuchten Wert in einer anderen Spalte anzeigen?
Du kannst die Offset
-Methode verwenden, um in der gewünschten Spalte einen Wert zu setzen, z.B. c.Offset(0, 4).Value = "x"
.
2. Was mache ich, wenn die Buchnummer nicht eindeutig ist?
In diesem Fall kannst Du die Find
-Methode in einer Schleife verwenden, um alle Vorkommen zu finden und zu verarbeiten. Alternativ kannst Du eine Liste der gefundenen Werte anzeigen.