VBA-Code: Schleife wird nicht durchlaufen...
Betrifft: VBA-Code: Schleife wird nicht durchlaufen...
von: Florian Müller
Geschrieben am: 21.11.2014 10:16:07
Hallo zusammen,
ich habe mir eine kleine Funktion in VBA geschrieben; hierbei soll eine Schleife durchlaufen werden, solange ein gewisses Datum vorliegt.
Während dieses Durchlaufs sollen, falls "bessere" Lösungen gefunden werden, diese jeweils gespeichert werden...Leider wird die Schleife nicht durchlaufen und als Fehler wird #WERT! in Excel zurückgegeben. Hat jemand Hilfe für mich, ich bräuchte dringendst eine Lösung!
Danke vorab!
Flo
Function TEST(ByVal T1 As String, _
ByVal T2 As Date, _
ByVal X As Double) As Double
Dim Zelle As Variant
Dim B As String
Dim A As Double
Dim T_alt As Date
Dim X_alt As Double
'Gleiches Datum suchen
Set Zelle = Worksheets("Datenanalyse").Columns(3).Find(T1, lookat:=xlWhole, LookIn:= _
xlValues)
MsgBox (Zelle.Address)
'Initialisierung
T_alt = Worksheets("Datenanalyse").Cells(Zelle.Row, 8).Value
X_alt = Worksheets("Datenanalyse").Cells(Zelle.Row, 4).Value
A = Worksheets("Datenanalyse").Cells(Zelle.Row, 13).Value
If Not Zelle Is Nothing Then
Do
' Falls Kriterien für "T-" erfüllt und Annäherung an T2:
If DateDiff("y", Worksheets("Datenanalyse").Cells(Zelle.Row, 8).Value, T2) >= 0 And _
DateDiff("y", T_alt, Worksheets("Datenanalyse").Cells(Zelle.Row, 8).Value) >= 0 Then
' Falls Kriterien für "X-" erfüllt und Annäherung an X:
If Worksheets("Datenanalyse").Cells(Zelle.Row, 4).Value <= X And Worksheets(" _
Datenanalyse").Cells(Zelle.Row, 4).Value > X_alt Then
' Dann neue "bessere" Lösung übernehmen!
A = Worksheets("Datenanalyse").Cells(Zelle.Row, 13).Value
T_alt = Worksheets("Datenanalyse").Cells(Zelle.Row, 8).Value
X_alt = Worksheets("Datenanalyse").Cells(Zelle.Row, 4).Value
' Falls identisches Laufzeitende und identischer Strike, kann Schleife _
verlassen werden!
If DateDiff("d", Worksheets("Datenanalyse").Cells(Zelle.Row, 8), T2).Value = 0 _
And Worksheets("Datenanalyse").Cells(Zelle.Row, 4).Value = X Then
Exit Do
End If
End If
End If
' Nächste Zeile durchsuchen:
Set Zelle = Worksheets("Datenanalyse").Cells(Zelle.Row + 1, 3)
' Abbruch, wenn anderes Datum:
MsgBox (Zelle.Address)
Loop Until Worksheets("Datenanalyse").Cells(Zelle.Row, 3).Value <> Worksheets(" _
Datenanalyse").Cells(Zelle.Row - 1, 3).Value
TEST = A
Else
TEST = -1
End If
End Function
 |
Betrifft: AW: VBA-Code: Schleife wird nicht durchlaufen...
von: Daniel
Geschrieben am: 21.11.2014 10:50:20
Hi
Vermutlich ist dein Suchbegriff (T1) nicht im Suchbereich (Worksheets("Datenanalyse").Columns(3))
vorhanden.
damit wird in:
Set Zelle = Worksheets("Datenanalyse").Columns(3).Find(T1,...)
der der Variablen Zelle der Wert NOTHING zugewiesen, was im Folgecode dann zu einem Fehler führt, weil dieser mit dem Wert NOTHING nicht arbeiten kann:
MsgBox (Zelle.Address)
'Initialisierung
T_alt = Worksheets("Datenanalyse").Cells(Zelle.Row, 8).Value
X_alt = Worksheets("Datenanalyse").Cells(Zelle.Row, 4).Value
A = Worksheets("Datenanalyse").Cells(Zelle.Row, 13).Value
du hast die Sicherheitsabfrage
If Not Zelle Is Nothing Then
zwar drin, aber die ist falsch platziert und kommt zu spät.
Sie müsste eigentlich direkt nach dem .FIND erfolgen.
Gruß Daniel
Betrifft: AW: VBA-Code: Schleife wird nicht durchlaufen...
von: Florian Müller
Geschrieben am: 21.11.2014 11:46:25
Hi Daniel,
Danke für den Hinweis!
Du hast recht! Aber daran ist es nicht gelegen (Der Wert wurde gefunden!)
Das Problem war, dass innerhalb der DateDiff-Funktionen auf .Value zurückgegriffen wurde!
Jetzt funktioniert es! Vielen Dank!
Beiträge aus den Excel-Beispielen zum Thema "VBA-Code: Schleife wird nicht durchlaufen..."