AW: Wert in Datei suchen - Tabellenname ausgeben
17.04.2008 11:51:00
Beverly
Hi,
eine Möglichkeit mit VBA
Sub zellinhalt_suchen()
Dim raZelle As Range ' Variable für die zu suchende Zelle
Dim varSuchbegriff As Variant ' Variable für den Suchbegriff
Dim strAbfrage As String ' Variable für den Abbruch der Suche
Dim strStartAdresse As String ' Variable für die Adresse der ersten _
gefundenen Zelle in der aktuellen Tabelle
Dim wsTabelle As Worksheet ' Variable für Tabelle als Objekt
' Suchbegriff abfragen
varSuchbegriff = InputBox("Bitte einen Suchbegriff eingeben:", "Suchabfrage", "Abend")
' ein Suchbegriff wurde eingegeben
If varSuchbegriff "" Then
' Schleife über alle Tabellen
For Each wsTabelle In ThisWorkbook.Worksheets
With Worksheets(wsTabelle.Name)
' Suchbegriff im benutzten Bereich suchen
Set raZelle = .UsedRange.Find(varSuchbegriff, , , xlWhole, , xlNext)
' wenn Suchbegriff gefunden
If Not raZelle Is Nothing Then
' gefundene Zelle in die linke obere Ecke
Application.Goto Reference:=.Range(raZelle.Address), Scroll:=True
If MsgBox(wsTabelle.Name & Chr(9) & raZelle.Address(0, 0) & Chr(10) & Chr( _
10) & "Suche beenden?" _
, vbYesNo + vbQuestion, "Suchbegriff gefunden in:") = 6 Then
' Prozedur verlassen wenn auf Ja geklickt wurde
Exit Sub
Else
' Adresse der ersten gefundenen Zelle auf Variable schreiben
strStartAdresse = raZelle.Address
Do
' nächste Zelle suchen
Set raZelle = .UsedRange.FindNext(raZelle)
' keine weitere Zelle gefunden, deshalb Schleife verlassen
If raZelle.Address = strStartAdresse Then Exit Do
' gefundene Zelle in die linke obere Ecke
Application.Goto Reference:=.Range(raZelle.Address), Scroll:=True
If MsgBox(wsTabelle.Name & Chr(9) & raZelle.Address(0, 0) & Chr(10) _
& Chr(10) & "Suche beenden?" _
, vbYesNo + vbQuestion, "Suchbegriff gefunden in:") = 6 Then
' Prozedur verlassen wenn auf Ja geklickt wurde
Exit Sub
End If
Loop
End If
Else
' laufende Tabelle ist nicht die letzte
If wsTabelle.Index Worksheets.Count Then
If MsgBox(wsTabelle.Name & Chr(10) & Chr(10) & "Suche beenden?" _
, vbYesNo + vbQuestion, "Suchbegriff nicht gefunden in:") = 6 Then
' Prozedur verlassen wenn auf Ja geklickt wurde
Exit Sub
End If
Else
' Information, dass in der letzten Tabelle der Suchbegriff nicht vorkommt
If MsgBox(wsTabelle.Name & Chr(10) & Chr(10) & "Suche beendet", _
vbOKOnly + vbExclamation, _
"Suchbegriff nicht gefunden in:") = vbOK Then Exit Sub
End If
End If
End With
Next wsTabelle
' Information, dass Suche beendet
MsgBox "Keine weitere Zelle gefunden", vbExclamation, "Suche beendet"
' Variable leeren
Set raZelle = Nothing
End If
End Sub