AW: Ersten Wert in einer Spalte suchen
19.04.2023 23:32:48
Matthias
Wieder neue Beobachtung und danach die sehnsüchtig erwartete Lösung:
Es ist definitiv die Formatierung im Tabellenblatt, die den Suchalgorithmis .Find (bzw. seinen Programmierer) verwirrt. Formatiere ich die Zelle G84 als Zahl mit 0 Nachkommastellen funktioniert dieses Makro einwandfrei, d.h. der Wert in Variable a wird gefunden:
Sub Suchen_01()
Dim Zeile1 As Range
Dim a As Long
Sheets("Rechnung").Select
a = Range("G84").Value
'Set Zeile1 = Range("G1:G500").Find(what:=a, LookAt:=xlWhole)
Set Zeile1 = Range("G1:G500").Find(what:=Replace(a, "", ""), LookAt:=xlWhole)
If Not Zeile1 Is Nothing Then
MsgBox "Die erste Zelle in Spalte G mit dem Wert 0 ist in Zeile " & Zeile1.row
Else
MsgBox "NIX GEFUNDEN!"
End If
End Sub
Sobald die Zelle G84 aber als Zahl mit 2 Nachkommastellen oder als Währung formatiert ist, wird der gleiche Wert in Variable nicht mehr gefunden.
Auch wenn es ein bißchen "von hinten durch die Brust ins Auge" aussieht", habe ich eeeeendlich eine annehmbare Lösung gefunden:
Sub Suchen_01()
Dim Zeile1 As Range
Dim a As String
Sheets("Rechnung").Select
a = Range("G84").Value
Set Zeile1 = Range("G1:G500").Find(what:=a, LookAt:=xlWhole)
'Set Zeile1 = Range("G1:G500").Find(what:=Replace(a, ",00", ""), LookAt:=xlWhole)
If Not Zeile1 Is Nothing Then
MsgBox "Die erste Zelle in Spalte G mit dem Wert 0 ist in Zeile " & Zeile1.row
Else
MsgBox "NIX GEFUNDEN!"
End If
End Sub
Dieses Makro funktioniert nur dann, wenn die Zellen der Spalte G im Sheet("Rechnung") so geändert werden:
=TEXT(WENN(F84*B84=0;"";B84*F84);"0,00")
mit
=WENN(F81*B81=0;"";B81*F81)
funktioniert es NICHT mehr! Bitte auch auch DIM a As Long bzw. DIM a As String beachten!
Ich kann mit dieser umständlich anmutenden Lösung leben und bedanke mich an dieser Stelle bei Dir Onur, für Deine Gelduld und Deine Tipps, die meine Gedanken in die richtige Richtung gelenkt haben. Vielleicht findest Du noch eine bessere Lösung, ich würde mich drüber freuen!
Freundliche Grüße, Matthias