ich hätte gern gehabt, ...
24.10.2022 18:26:13
Yal
... dass Du sagst "den Makrorekorder habe ich auch probiert". Aber vielleicht hast Du auch, aber nur unvollständig darüber berichtet.
Der Makrorekorder, den ich gerade eben angestossen habe, um Dir eine qualifizierte Antwort zu geben, liefert:
Range(Selection, Selection.End(xlDown)).Select
Selection.Find(What:="Aug", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
(ich habe eine Monatsliste ab A5 aufgebaut und nach "Aug" gesucht)
Also es "aktiviere" die Zelle, wo der Treffer liegt. Mehr nicht. Vielleicht war das der Punkt, wo Du nicht weiterkam. Gut, dass wir (also eig. ich) darüber gesprochen haben.
Man braucht eine Variable vom Typ Range, die durch Find gesetzt wird. Wird nichts gefunden, bleibt diese "Nothing".
Also lange Rede (warum schreibe ich eigentlich 20 mal mehr als den Fragenden?) hier ein Beispielcode:
Sub Test()
Suche "Aug"
End Sub
Sub Suche(GesuchteWert As String)
Dim Z As Range
With Worksheets(1).Range("A5:A18")
Set Z = .Find(What:=GesuchteWert, LookAt:=xlWhole, MatchCase:=False)
If Not Z Is Nothing Then
MsgBox "Gesuchte Wert """ & GesuchteWert & """ wurde in Zelle " & Z.Address & " gefunden." & vbCr _
& "Es Entspricht Zeile " & (Z.Row - .Row + 1) & " vom geprüften Bereich " & .Address
Else
MsgBox "Gesuchte Wert """ & GesuchteWert & """ wurde in " & .Address & " nicht gefunden."
End If
End With
End Sub
Normalerweise, wenn man den Cursor auf dem Schlüsselwort (hier "Find") und F1 Drückt, kommt man an dem Online-Hilfe zum Schlüsselwort. Leider im Fall von Find gibt es zwei und es kommt immer an dem falschen Eintrag. Richtig ist:
https://learn.microsoft.com/en-us/office/vba/api/excel.range.find
Inkl. Beispiel
VG
Yal