Moin zusammen, bin neu hier im Forum.
Kurz zu mir: ich arbeite schon lange mit ExCel, allerdings nur rudimentär und beherrsche nur die basics. Mein Kollege möchte etwas basteln, mit dem man zB durch Doppelclick auf eine bestimmte Zelle sieht in welchem sheet dieser Zelleninhalt, zB ein Name, ebenfalls enthalten ist. Hintergund ist, dass es in verschiedenen Themenbereichen und Projekten Überschneidungen gibt und man dadurch schnell sehen kann in welchem Projekt zB Gerät XYZ ebenfalls auftaucht.
Meine 1-stündige Suche hat leider nicht zum gewünschten Erfolg verholfen, vielleicht könnt Ihr mir weiterhelfen. Danke!
Moin,
suche nach vba Zellwert in allen Blättern suchen
den code ins codemodule des Arbeitsblattes, rechter Mausklick auf Arbeitsblattreiter Code anzeigen , einfügen
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim rngZelle As Range
Dim strSuchbegriff As String, Ergebnis As String
Dim bytWeiter As Byte
Dim lngTabellen As Long
strSuchbegriff = Target.Value
If strSuchbegriff <> "" Then
For lngTabellen = 1 To Worksheets.Count
If Worksheets(lngTabellen).Name <> ActiveSheet.Name Then
With Worksheets(lngTabellen).UsedRange
Set rngZelle = .Find(strSuchbegriff, lookat:=xlPart, LookIn:=xlValues)
If Not rngZelle Is Nothing Then
firstAddress = rngZelle.Address
Do
Ergebnis = Ergebnis & IIf(Ergebnis = "", "", vbLf) & rngZelle.Parent.Name
' nächsten Treffer suchen
Set rngZelle = .FindNext(rngZelle)
Loop While Not rngZelle Is Nothing And rngZelle.Address <> firstAddress
End If
End With
End If
Next lngTabellen
If Ergebnis <> "" Then MsgBox Ergebnis
End If
Set rngZelle = Nothing
End Sub
Danke, das klappt schonmal für einen worksheet, wie bekommt man es dazu, alle worksheets abzusuchen? Muss man vorher die worksheets verknüpfen oder dazu etwas im code anpassen?
Edit: der code, wenn man ihn in jeden worksheet einfügt, funktioniert doch so wie geplant. Vielen Dank!
For lngTabellen = 1 To Worksheets.Count
heißt übersetzt- von 1 bis Anzahl der Arbeitsblätter
If Worksheets(lngTabellen).Name <> ActiveSheet.Name Then
mache das Folgende nur wenn der Name Arbeitsblatt zu durchsuchenden Arbeitsblattes
nicht der Name des aktuellen Arbeitsblattes ist
With Worksheets(lngTabellen).UsedRange
der nachfolgende Code bezieht sich auf den benutzten Bereich des Arbeitsblattes aus der Liste der Arbeitsblätter
Somit werden bereits alle Blätter durchsucht nur nicht das wo due in die Zelle klickst.
Und ausgeblendete Zellen könnten auch von der Such ausgelassen werden.