In Tabellenblatt nach String suchen und springen
Schritt-für-Schritt-Anleitung
Um in einem Excel-Tabellenblatt nach einem bestimmten String zu suchen und zur Zelle zu springen, kannst du den folgenden VBA-Code verwenden. Dieser Code wird bei einem Doppelklick auf das entsprechende Blatt ausgeführt.
- Öffne den VBA-Editor mit
ALT + F11
.
- Wähle das entsprechende Tabellenblatt aus, in dem du den Code einfügen möchtest.
- Kopiere den folgenden Code in das Codefenster:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim aufnr As String, aufname As String
Dim blatt As String, SuName As String
Dim AC As Range, lz1 As Long
If Target.Count > 1 Then Exit Sub
If Target.Value = Empty Then Exit Sub
blatt = Cells(Target.Row, 1).Value
aufnr = Cells(Target.Row, 2).Value
aufname = Cells(Target.Row, 3).Value
SuName = aufnr & " - " & aufname
On Error GoTo Fehler1
With Worksheets(blatt)
On Error GoTo Fehler2
lz1 = .Cells(Rows.Count, 4).End(xlUp).Row
For Each AC In .Range("D1:D" & lz1)
If InStr(AC, SuName) > 0 Then
.Activate
ActiveWindow.ScrollRow = AC.Row - 2
AC.Select
Exit Sub
End If
Next AC
MsgBox "Suchname: " & SuName & " nicht gefunden!"
End With
Exit Sub
Fehler1: MsgBox "Das Blatt: " & blatt & " existiert nicht!": Exit Sub
Fehler2: MsgBox "Unerwarteter Fehler im Zielblatt" & vbLf & Error()
End Sub
- Schließe den VBA-Editor und teste den Code, indem du auf einen Zellinhalt im Blatt „Übersicht“ doppelklickst.
Häufige Fehler und Lösungen
-
Laufzeitfehler 'Objektvariable oder With-Blockvariable nicht festgelegt'
- Dieser Fehler tritt häufig auf, wenn das angegebene Blatt nicht existiert. Stelle sicher, dass der Blattname korrekt ist.
-
Nichts gefunden bei der Suche
- Achte darauf, dass der Suchstring korrekt zusammengesetzt ist. Wenn du nach einer Nummer suchst, stelle sicher, dass du nur die Nummer verwendest und keine zusätzlichen Zeichen.
-
Suchbegriff nicht vorhanden
- Überprüfe, ob die Zellen, in denen gesucht wird, keine verbundenen Zellen enthalten, da dies die Suche beeinträchtigen kann.
Alternative Methoden
Falls die Find
-Methode nicht funktioniert, kannst du auch eine For Each
-Schleife verwenden, um durch die Zellen zu iterieren. Hier ein Beispiel:
For Each AC In Worksheets(blatt).Range("D1:D" & lz1)
If AC.Value = aufnr Then
AC.Select
Exit For
End If
Next AC
Diese Methode kann helfen, wenn die Find
-Methode unerwartete Ergebnisse liefert.
Praktische Beispiele
Angenommen, du hast in der „Übersicht“ folgende Daten:
A |
B |
C |
Blatt1 |
12345 |
Testname1 |
Blatt2 |
67890 |
Testname2 |
Wenn du auf die Zelle mit „Blatt1“ doppelklickst, sucht der Code nach „12345 - Testname1“ im entsprechenden Zielblatt.
Tipps für Profis
- Achte darauf, die Fehlerbehandlung (
On Error
) strategisch einzusetzen, um unerwartete Laufzeitfehler abzufangen.
- Teste den Code schrittweise, um zu verstehen, wo es möglicherweise zu Problemen kommen könnte.
- Verwende die
Debug.Print
-Anweisung, um Variablenwerte während der Ausführung des Codes zu überprüfen und Fehler leichter zu identifizieren.
FAQ: Häufige Fragen
1. Wie kann ich den Code anpassen, um nur nach der Auftragsnummer zu suchen?
Du kannst die Zeile, die den Suchstring zusammensetzt, anpassen, um nur aufnr
zu verwenden, z.B. SuName = aufnr
.
2. Funktioniert dieser Code in Excel 2010?
Ja, der Code sollte in Excel 2010 und neueren Versionen ohne Probleme funktionieren. Achte darauf, dass die Makro-Einstellungen aktiviert sind.