Schon ganz gut, aber...
17.07.2004 06:06:01
Oliver S.
Moin Harald,
sorry, wenn ich mich erst heute morgen auf Deine Antwort hin melde und danke Dir für Deinen Lösungsvorschlag. Er funktioniert prima. Allerdings wäre es schöner, wenn ich nicht vorher Spalten angeben müsste, die durchsucht werden sollen, sondern wenn generell alles durchsucht werden würde. Das Problem ist, das Makro soll u.a. dazu dienen, aus Datenloggerdaten schneller bestimmte Daten sich anzeigen zu lassen. Nun ist aber das Problem, dass die Anordnung der Datenloggerdaten nicht immer gleich ist, da die Daten von verschiedenen Datenloggern (verschiedenen Hersteller) aufgezeichnet werden. Somit kann es sein, dass mal die Werte, die gesucht werden, in Splate B und F, mal in C und D usw. stehen. Mit Deinem Lösungsvorschlag müsste ich für jeden Datenlogger eine extra Tabelle anlegen mit dem entsprechend angepassten Makro. Ich schreibe hier mal ein Makro hin, welches ich in einer anderen Datei schon im Einsatz habe, nur das sucht eben nur nach einem Suchbegriff.
Sub Suchen()
Dim strSuche As String, erg As Range, firstAddress As String, gefunden() As String
Dim index1 As Integer, index2 As Integer, text As String, schalter As Integer
schalter = 4
text = "Die nächste Übereinstimmung anzeigen?"
Do
strSuche = InputBox("Mindestens die 3 ersten Buchstaben des Suchbegriffes " _
& "oder kompletten Suchbegriff eingeben. Groß-/Kleinschreibung ist egal.", "Suchen")
If strSuche = "" Or Len(strSuche) = 0 Then Exit Sub
Loop Until Len(strSuche) > 2
Set erg = Range("A4:IV65536").Find(what:=strSuche, lookat:=xlPart, _
LookIn:=xlValues, MatchCase:=False)
If erg Is Nothing Then
Beep
MsgBox "Suchbegriff wurde nicht gefunden! Es ist aber nicht 100% sicher," _
& "dass der gesuchte Begriff sich nicht in der Tabelle befindet. " _
& "Überprüfen Sie daher bitte nochmal die Schreibweise und geben den Suchbegriff " _
& "erneut ein, oder suchen Sie den Begriff manuell in der Tabelle."
Else
firstAddress = erg.Address
Do
index1 = index1 + 1
ReDim Preserve gefunden(1 To index1)
gefunden(index1) = erg.Address
Set erg = Range("A4:IV65536").FindNext(erg)
Loop While Not erg Is Nothing And erg.Address <> firstAddress
Do
index2 = index2 + 1
If index2 = index1 Then
text = ""
schalter = 0
End If
Range(gefunden(index2)).Select
ActiveWindow.ScrollRow = Selection.Row
ActiveWindow.ScrollColumn = Selection.Column
If MsgBox(CStr(index2) & ". von " & CStr(index1) _
& " gefundenen Übereinstimmungen des Suchbegriffes." _
& vbNewLine & text, schalter, "Anzeige") = 7 Then Exit Do
If index2 = index1 Then Exit Do
Loop
End If
End Sub
Vielleicht könnte das ja so abgeändert werden, damit es auch 2 oder sogar 3 Suchbegriffe zuläßt. Vieleicht könntest Du es Dir ja mal anschauen und eventuell abändern. Würde es liebendgerne selber lösen mein Problem. Leider fehlt mir dazu aber das Wissen dazu und daher bin ich auf dieses Forum mit Leuten wie Dir angewiesen.
Ich hoffe, ich verlange nicht zu viel,
Oliver