VBA: brugerdefineret function
Jeg har en brugerdefineret function der ud fra et dato-input returnerer hvor mange dage der er gået siden vi sidst fik leveret en blanding (hvor gammel en blanding nu er blevet) Det skal implementeres i en anden funktion der skal beregne om der skal bestilles en ny blanding, den givne dag.Function BlandingAlder(ThisDateInput As Date)
Sheets(4).Select
' hvis sidste blandning nærmer sig max timer
ThisDateRow = FindDateRowInCol(ThisDateInput, DATECOLUMN)
For i = ThisDateRow - 1 To ThisDateRow - 5 Step -1 ' tæller 5 rækker baglæns
'MsgBox "Række " & i & " - " & Cells(i, BEHOLDNINGSCOLUMN - 2).Value
If Cells(i, BEHOLDNINGSCOLUMN - 2).Value >= 15000 Then ' hvis der ligger en bestilling indenfor de seneste 5 dage - finder kun den seneste levering
Exit For ' stopper når fundet den seneste levering
End If
Next i
If Not Cells(ThisDateRow, BEHOLDNINGSCOLUMN - 2).Value >= VITAMINPURCHASEAMOUNT / 2 Then ' hvis der ikke er bestilt en blanding til i dag
BlandingAlder = ThisDateRow - i ' functionen returnerer hvor mange dage gammel blandingen nu er
End If
End Function
Sheets(4).Select
' hvis sidste blandning nærmer sig max timer
ThisDateRow = FindDateRowInCol(ThisDateInput, DATECOLUMN)
For i = ThisDateRow - 1 To ThisDateRow - 5 Step -1 ' tæller 5 rækker baglæns
'MsgBox "Række " & i & " - " & Cells(i, BEHOLDNINGSCOLUMN - 2).Value
If Cells(i, BEHOLDNINGSCOLUMN - 2).Value >= 15000 Then ' hvis der ligger en bestilling indenfor de seneste 5 dage - finder kun den seneste levering
Exit For ' stopper når fundet den seneste levering
End If
Next i
If Not Cells(ThisDateRow, BEHOLDNINGSCOLUMN - 2).Value >= VITAMINPURCHASEAMOUNT / 2 Then ' hvis der ikke er bestilt en blanding til i dag
BlandingAlder = ThisDateRow - i ' functionen returnerer hvor mange dage gammel blandingen nu er
End If
End Function
functionen virker fint så lange jeg bestillingerne kun skal beregnes i Sheet(4), men jeg vil gerne kunne bruge functionen i sheet(5) også.
Derfor tænker jeg at i stedet for som det første at have linjen
Sheets(4).Select, så vil jeg gerne kunne detectere om functionskaldet kommer fra en celle i sheet 4 eller 5.
Jeg tænker at det vil give problemer hvis jeg blot bruger ActiveSheet, fordi activeSheet måske om lidt har skiftet til Sheet(1), og så vil functionen ikke beregne som forventet, måske endda returnere en fejl.
Der må være andre måder at tilgå hvilken sheet funktionskaldet kommer fra. eller skla der i stedet for arbejdes med referencer en celle op eller 5 celler op.
