Forumbeitrag
Excel-Version des Fragestellers:
2019
Erfahrungslevel des Fragestellers:
VBA nur mit Recorder
Hi
vermutlich ist das Problem, dass .Find nichts findet.
wenn du bei .Find mit LookIn:=xlvalues suchst, dann schaut VBA nicht in den unformatierten Zellwerten, sondern in den formatierten Zellwerten.
das ZählenWenns hingegen arbeitet als Formel immer mit den Unformatierten Zellwerten.
Dh. wenn du nach 1,234 suchst und in der durchsuchten Spalte diese Zahl nur als 1,23 angezeigt wird, kann dein .Find sie nicht finden, du müsstest dann nach 1,23 suchen.
mein Tipp: da du nur eine Spalte durchsuchst, kannst du mit Application.Match (Vergleich) arbeiten.
das arbeitet als Formel auch mit den unformatierten Zellwerten und du bekommst auch sofort die Position, wo sich das gesuchte Element befindet.
mit Application.Match bekommst du auch keinen Fehlerabbruch, wenn das Suchelement nicht gefunden wird, sondern einen Fehlerwert, auf den du prüfen kannst.
Beispiel:
dim vntFundstelle as variant
vntFundstelle = Application.Match(vntItem, wks.Range(conDetectionRangeAddress), 0)
if not IsError(vntFundstelle) Then Msgbox "Gefunden in Zeile " & vntFundstelle
und noch ein Tipp:
bei .Find sollte man immer möglichst viele Parameter angeben, zumidest LookAt und LookIn, und ggf auch Matchcase
gibt man die nicht an, dann verwendest du die zuletzt gemachte Einstellung, und das kann dann auch den Effekt haben, dass es manchmal funktioniert und machmal nicht.
Gruß Daniel