Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: In tabellenblatt nach string suchen

In tabellenblatt nach string suchen
12.11.2019 12:52:37
xxFreestylexx
Hallo
würde gerne den String suchen und zur Zelle Springen
habe im ersten Blatt (Übersicht) eine Tabelle
in Spalte A steht der Zielsheet name in spalte B u C der suchname
Nun soll nach doppelklick der Blattname aus Zelle A
und der Suchstring aus B:C angesprungen werden jedoch bekome ich hier immer einen laufzeitfehler cariable oder with block nicht festgelegt
Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean)
Dim search As String
Dim aufnr, aufname As String
Dim blatt As String
Dim ws As Worksheet
Set ws = Sheets("übersicht")
blatt = ActiveCell.Value
aufnr = ActiveCell.Offset(0, 1).Value
aufname = ActiveCell.Offset(0, 2).Value
search = aufnr & " - " & aufname
Cells.find(What:=search, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Danke für die hilfe
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: In tabellenblatt nach string suchen
12.11.2019 12:59:14
Rudi
Hallo,
evtl noch
sheets(blatt).activate
vor cells.find
?
Gruß
Rudi
AW: In tabellenblatt nach string suchen
12.11.2019 13:05:22
xxFreestylexx
Habe ich schon versucht immer der selbe fehler..
91 Objektvariable oder with blockvariable nicht festgelegt,,,
dann wird nix gefunden.
12.11.2019 13:13:00
Rudi
Hallo,
set r=cells.find(what=search,.....)
if r is nothing then
msgbox "nix da"
else
r.activate
end if

Anzeige
AW: In tabellenblatt nach string suchen
12.11.2019 13:13:06
Piet
Hallo
probier es bitte mal so. Fehler möglichkeiten sollte man dabei berücksichtigen.
mfg Piet
Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean)
Dim search As String
Dim aufnr, aufname As String
Dim blatt As String
Dim ws As Worksheet
If ActiveSheet.Name  "übersicht" Then Exit Sub
If ActiveCell.Column  "A" Then MsgBox "Cursor steht nicht in Spalte A": Exit Sub
blatt = ActiveCell.Value
aufnr = ActiveCell.Offset(0, 1).Value
aufname = ActiveCell.Offset(0, 2).Value
search = aufnr & " - " & aufname
On Error GoTo Fehler1
Worksheets(blatt).Select
On Error GoTo Fehler2
Cells.Find(What:=search, After:=Cells(1, 1), LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Exit Sub
Fehler1:  MsgBox "Das Blatt:  " & blatt & "  exisitiert nicht!": Exit Sub
Fehler2:  MsgBox "Suchname:  " & search & "  nicht gefunden!"
End Sub

Anzeige
AW: In tabellenblatt nach string suchen
12.11.2019 13:26:53
xxFreestylexx
Danke jetzt sehe ich zumindest mal was passiert..
habe das ganze jetzt vereinfacht u suche nur noch nach der nummer die in einer eigenen Zelle steht aver trotzdem msgbox nichts gefunden
Userbild
Anzeige
AW: In tabellenblatt nach string suchen
12.11.2019 13:42:35
Piet
Hllo
dein Suchlauf kann von der Logik her so nicht klappen! Du verbindest die Such Nr. mit "-" und einem Namen! Das kann nicht klappen. Probier bitte mal den überarbeiteten Code. Der sucht nach allen drei Begriffen. Damit solltest du was finden können ....
mfg Piet
Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean)
Dim aufnr, aufname As String
Dim blatt As String
Dim ws As Worksheet
If ActiveSheet.Name  "übersicht" Then Exit Sub
If ActiveCell.Column  1 Then MsgBox "Cursor steht nicht in Spalte A": Exit Sub
blatt = ActiveCell.Value
aufnr = ActiveCell.Offset(0, 1).Value
aufname = ActiveCell.Offset(0, 2).Value
search = aufnr & " - " & aufname
On Error GoTo Fehler1
Worksheets(blatt).Select
On Error Resume Next
Cells.Find(What:=search, After:=Cells(1, 1), LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
If Err = 0 Then Exit Sub Else Err = 0
Cells.Find(What:=aufnr, After:=Cells(1, 1), LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
If Err = 0 Then Exit Sub Else Err = 0
Cells.Find(What:=aufname, After:=Cells(1, 1), LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
If Err = 0 Then Exit Sub Else GoTo Fehler2
Exit Sub
Fehler1:  MsgBox "Das Blatt:  " & blatt & "  exisitiert nicht!": Exit Sub
Fehler2:  MsgBox "Suchname:  " & search & "  nicht gefunden!"
End Sub

Anzeige
AW: In tabellenblatt nach string suchen
12.11.2019 14:00:27
xxFreestylexx
Hallo danke für deine Hilfe habe wohl daran gedaht nur nach der nr zu suchen aber es wird nichts gefunden.. Zur info die Zahen stehen im Zielblatt in spalte D habe ich aber auch schon abgeändert u es wird trotzdem nichts gefunden :(
AW: In tabellenblatt nach string suchen
12.11.2019 14:16:19
xxFreestylexx
Anbei mal mein Excel.. Fyi Hatte den Code in Tabelle 1
https://www.herber.de/bbs/user/133143.xlsx
Anzeige
AW: In tabellenblatt nach string suchen
12.11.2019 16:26:26
Werner
Hallo,
mach mal in deinen Blättern, in denen du suchst, die ganzen Zellverbünde raus.
Die gleiche Optik erhälst du, wenn du dann die entsprechende Zellen auwählst, z.B. D19 und E19, dann Zellen formatieren - Ausrichtung - Horizontal - Über Auswahl zentrieren.
Dann funktioniert auch die Suche.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 And Target.Row > 2 Then
Cancel = True
With Worksheets(Target.Value)
Set raFund = .Columns("D").Find(what:=Target.Offset(, 1).Value _
& " - " & Target.Offset(, 2).Value, LookIn:=xlValues, lookat:=xlWhole)
If Not raFund Is Nothing Then
.Activate
raFund.Select
Else
MsgBox "Suchbegriff nicht vorhanden."
End If
End With
End If
End Sub
Gruß Werner
Anzeige
AW: In tabellenblatt nach string suchen
12.11.2019 17:16:33
Piet
Hallo
ich bin erstaunt das der Code von Werner auf meinem PC funktioniert. Obwohl ich bei mir zwei verbundene Zellen aufgelöst hatte lief bei mir die Find Methode in einen Laufzeitfehler. Dafür habe ich meinen Code noch einmal erweitert um auch nur die Auftrags Nummer suchen zu können.
Nordfrost kommt zweimal vor, in der Übersicht steht "Nordfrost 2" im Auftragsblatt "Nordfrost II". Das kann mein geaenderter Suchlauf jetzt aufspüren.
mfg Piet

Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim aufnr, aufname As String
Dim SuName, blatt 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
If aufnr & aufname = Empty Then
MsgBox "Auftrags Nr. und Name sind leer!": Exit Sub
ElseIf aufnr = "" Or aufname = "" Then
MsgBox "Auftrags Nr. oder Name fehlt!": Exit Sub
End If
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) Then
.Activate  'Zielblatt aktivieren
'mit -2 Leerzeilen einstellen
ActiveWindow.ScrollRow = AC.Row - 2
AC.Select: Exit Sub
End If
Next AC
For Each AC In .Range("D1:D" & lz1)
If InStr(AC, aufnr) Then
.Activate  'Zielblatt aktivieren
'mit -2 Leerzeilen einstellen
ActiveWindow.ScrollRow = AC.Row - 2
MsgBox "Bitte Auftrags Name prüfen"
AC.Select: Exit Sub
End If
Next AC
MsgBox "Such-Nummer:  " & aufnr & "  nicht gefunden!"
End With
Exit Sub
Fehler1:  MsgBox "Das Blatt:  " & blatt & "  exisitiert nicht!": Exit Sub
Fehler2:  MsgBox "unerwarteter Fehler im Zielblatt" & vbLf & Error()
End Sub

Anzeige
AW: In tabellenblatt nach string suchen
12.11.2019 23:11:29
xxFreestylexx
Hallo entschuldige die späte rückmeldung .. erst mal danke für eure Zeit hätte es ohne euch nie hin bekommen :)
Der Code von Werner hat auf anhieb funktioniert
Hab jetzt neu in einer Firma als IT Typ angefangen aber die haben nur Excel VBA Probleme .. bringt micht teilweise echt zum verzweifeln..
Dies war eins der kleinen "Projekte" jetzt kann ich etwas ruhiger schlafen
Danke euch !!
Anzeige
Gerne u. Danke für die Rückmeldung. o.w.T.
13.11.2019 08:50:10
Werner
AW: In tabellenblatt nach string suchen
12.11.2019 16:47:30
Piet
Hallo
ich habe einen funktionierenden Code für das Blatt "Übersicht". Da rein kopieren, der funktioniert wenigstens. Höfliche Bitte - mich bitte NICHT fragen warum die Finde Methode versagt!!?
Nach 20 Jahren programmieren in Excel gibt es immer noch unerklaerliche Laufzeitfehler die ich technisch NICHT erklaeren kann. Funktioniert ein Suchlauf mit Find nicht, nehme ich die alte For Next Variante. Und siehe da, damit klappt es. Eine Antwort auf das Find Problem habe ich nicht!!
mfg Piet
Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim aufnr, aufname As String
Dim SuName, blatt 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
If aufnr & aufname = Empty Then
MsgBox "Auftrags Nr. und Name sind leer!": Exit Sub
ElseIf aufnr = "" Or aufname = "" Then
MsgBox "Auftrags Nr. oder Name fehlt!": Exit Sub
End If
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) Then
.Activate  'Zielblatt aktivieren
'mit -2 Leerzeilen einstellen
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 & "  exisitiert nicht!": Exit Sub
Fehler2:  MsgBox "unerwarteter Fehler im Zielblatt" & vbLf & Error()
End Sub

Anzeige
AW: In tabellenblatt nach string suchen
12.11.2019 15:38:24
Piet
Hallo
hast du meine Nachricht mit Lösung um 13:42:35 nicht gelesen? Der Suchlauf nach einer Nummer kann nicht klappen wenn du mit "-" Zeichen einen Namen anhaengst. Hast du mein 2. Makro mal getestet?
mfg Piet
AW: In tabellenblatt nach string suchen
12.11.2019 15:41:27
xxFreestylexx
Ja wie gesagt habs so abgeänder das er nur nach nummer sucht ohne - aber funktioniert trotzdem nicht deshalb hab ich dir mein excel auch angehängt.. bin völlig überfragt egal was ich versuche .. geht nicht.. Die Zahlen (aufnr) stehen jetzt auch separat in zelle D
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

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.

  1. Öffne den VBA-Editor mit ALT + F11.
  2. Wähle das entsprechende Tabellenblatt aus, in dem du den Code einfügen möchtest.
  3. 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
  1. Schließe den VBA-Editor und teste den Code, indem du auf einen Zellinhalt im Blatt „Übersicht“ doppelklickst.

Häufige Fehler und Lösungen

  1. 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.
  2. 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.
  3. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige