ich versuche mich gerade an der VBA programmierung, dabei habe ich folgendes Probelm:
Ich möchte aus einer Tabelle den Wert auslesen der meinem Wunschwert am nächsten kommt.
Das Probelm ist wenn ich z.B als Wunschwert "1" eintrage, dann sucht er micht exakt diesen, sondern gibt mir auch alle anderen Zahle die die Ziffer enthalten an (z.B. 10 ,21 ,31 usw.). Wenn ich die Bedingung LookAt (XlLookAt).= xlWhole benutze findet er gar keine Werte mehr.
Was mache ich falsch?
Vielen Dank
Hier mein Code:
Private Sub zusammen_Click()
'Letze beschriebene Zeile ermitteln
Dim loLetzte As Long
loLetzte = Cells(Rows.Count, "F").End(xlUp).Offset(1, 0).Row
loLetzte = loLetzte - 1
'MsgBox "Die Tabelle endet in Zeile " & loLetzte
'nächstliegende Zahl finden
Dim Numbers
Dim item
Dim closestValue As Double
Dim diff As Double
Dim minDiff As Double
minDiff = 0.5
Numbers = Range("F5:F" & loLetzte)
For Each item In Numbers
diff = Abs(item - Range("I17"))
If diff minDiff Then
minDiff = diff
closestValue = item
End If
Next item
'MsgBox "The closest value: " & closestValue
'erste Zeile in der der Suchbegriff enthalten ist
Dim Rng_1 As Range
Set Rng_1 = ActiveSheet.Range("F5:F" & loLetzte).Find(what:=closestValue)
If Rng_1 Is Nothing Then
MsgBox "Nichts gefunden"
Exit Sub
End If
MsgBox "Zeile: " & Rng_1.Row & "; Adresse: " & Rng_1.Address
'ermittelte Zeile in Tabelle schreiben
Range("J6").value = Rng_1.Row
End Sub
Hier meine Beispiel Datei:
https://www.herber.de/bbs/user/165407.xlsm