Frage zu Makro
Holger
Benutze für eine Suchfunktion folgendes Makro:
Option Explicit
Global SSearch As String
Public Sub SearchAllTables()
Dim ws As Worksheet
Dim c
Dim firstAddress As String
Dim secAddress
Dim GFound As Boolean
Dim GWeiter As Boolean
GWeiter = False
GFound = False
anf:
SSearch = InputBox("Suchen nach:", "Search In All Tables", SSearch)
If SSearch = "" Then
End
End If
weiter:
For Each ws In Worksheets
'ws.Select
ws.Protect password:="xxx", userinterfaceonly:=True
With ws.Columns(1)
Set c = .Find(SSearch, LookIn:=xlValues, MatchCase:=False)
If Not c Is Nothing Then
GFound = True
ws.Select
c.Select
firstAddress = c.Address
If MsgBox("Weitersuchen ?", vbQuestion + vbYesNo) = vbYes Then
Do
Set c = .FindNext(c)
secAddress = c.Address
If c.Address = firstAddress Then
Exit Do
End If
c.Select
If MsgBox("Weitersuchen ?", vbQuestion + vbYesNo) = vbNo Then
GWeiter = True
GoTo ende
End If
Loop While Not c Is Nothing And secAddress firstAddress And c.Address _
firstAddress
Else
GWeiter = True
GoTo ende
End If
End If
End With
Next ws
ende:
If GFound = False Then
If MsgBox("Suchwert nicht gefunden ! Neue Suche ?", vbInformation + vbYesNo) = vbYes _
Then
GoTo anf:
End If
Else
If GWeiter = False Then
If MsgBox("Sie haben alle Tabellenblätter durchsucht ! Nochmal alle gefundenen _
Einträge zum Suchbegriff anzeigen ?", vbInformation + vbYesNo) = vbYes Then
GoTo weiter
End If
End If
End If
End Sub
Habe eine Excelmappe mit mehreren Tabellenblättern, welche aber ausgeblendet sind. Über Buttons kann zu den einzelnen Blättern gesprungen werden, so das dann nur das eine Blatt angezeigt wird. Die o.g. Suche wird über einen Button gestartet, welcher sich auf dem jeweiligen Tabellenblatt befindet.
Wie muss ich den Code ändern, damit er nur auf dem aktuellen aktivierten /aktuell angezeigten Tabellenblatt sucht und nicht alle Blätter ?
Derzeit besteht das Problem, dass, wenn ich z.B.: nach Affe suche alles in Ordnung ist, sobald ich aber nach z.B.: Afe suche springt er bis zum letzen gefunden Eintrag (bei weitersuchen) und klickt man dann wieder auf weitersuchen, so kommt ein Laufzeitfehler (1004 - Die Methode select für das Objekt _Worksheet ist fehlgeschlagen - Klick auf debuggen und die Zeile unter GFound = True ist gelb unterlegt (also die Zeile ws.Select)).
Auf dem System befindet sich derzeit noch Office 2003 und 2007 im Paralellbetrieb. Die Mappe wird aber unter Office 2007 geöffnet.
Gruss
Holger