VBA: Excel 2000/2002 Konstruktion einer Function
04.07.2004 18:02:00
LXus
Folgendes Problem: Habe eine Function, unten gepostet, die mich zur Verzweiflung bringt. Sie Läuft nämlich nicht.
Kann mir wer sagen was daran falsch ist oder wie man Sie besser schreiben kann?
Ich kann im Grunde alle Variablen innerhalb der
Function angeben, wenn ich mit relativen Bezügen arbeite. Nur wie geht das?
Aber hier erst mal die besagte Function:
Function AZT(R1 As Range, R2 As Range, R3 As Range)
If WorksheetFunction.IsNumber(Beginn) = True And WorksheetFunction.IsNumber(Ende) = True Then
Dim Beginn, Ende, P, Ps, BgB, BgE As Date
Beginn = "RC[-4]"
Ende = "RC[-3]"
P = "RC[-2]"
Ps = "RC[-1]"
BgB = Worksheets("A").Range("BE15").Value
BgE = Worksheets("A").Range("BE16").Value
If Beginn < Ende Then
If P <= Ps Then
If Ende >= BgE And Beginn > BgB Then
AZT = BgE - Beginn - Ps
End If
If Ende < BgE And Beginn <= BgB Then
AZT = Ende - BgB - Ps
End If
If Ende < BgE And Beginn > BgB Then
AZT = Ende - Beginn - Ps
End If
If Ende >= BgE And Beginn <= BgB Then
AZT = BgE - BgB - Ps
End If
End If
If P > Ps Then
If Ende >= BgE And Beginn > BgB Then
AZT = BgE - Beginn - P
End If
If Ende < BgE And Beginn <= BgB Then
AZT = Ende - BgB - P
End If
If Ende < BgE And Beginn > BgB Then
AZT = Ende - Beginn - P
End If
If Ende >= BgE And Beginn <= BgB Then
AZT = BgE - BgB - P
End If
End If
End If
Dim Txt, Zm As String, Zeit As Date
Txt = "RC[-4]"
Zm = Worksheets("A").Range("BE19").Text
Zeit = "RC[-3]"
ElseIf WorksheetFunction.IsText(Txt) = True And _
Txt = "E" Or Txt = "F" Or Txt = "K" Or Txt = "RF" Or Txt = "S" Or Txt = "SE" Or Txt = "E/RF" Or Txt = "SE/E" Then
AZT = WorksheetFunction.VLookUp(Txt, R1, WorksheetFunction.VLookUp(Zm, R3, 3, False), False)
ElseIf WorksheetFunction.IsText(Txt) = True And _
Txt = "R" Or Txt = "GB" Or Txt = "SE/RF" Or Txt = "E/ZT" Then
If Zeit <= 0 Or Txt = "" Then Exit Function
If Txt = "R" Or Txt = "GB" Or Txt = "SE/RF" Or Txt = "E/ZT" Then
If Zeit <= 0 Or Txt = "" Then Exit Function
End If
If Zeit < WorksheetFunction.VLookUp(Txt, R2, WorksheetFunction.VLookUp(Zm, R3, 3, False), False) Then
AZT = Zeit
End If
If Zeit >= WorksheetFunction.VLookUp(Txt, R2, WorksheetFunction.VLookUp(Zm, R3, 3, False), False) Then
AZT = WorksheetFunction.VLookUp(Txt, R2, WorksheetFunction.VLookUp(Zm, R3, 3, False), False)
End If
End If
Else: Exit Function
End If
End Function
DANKE
LXus