Jeg ved ikke hvordan man kan få indsat hjælp og tips til selve funktionen (i regnearket).
Jeg har også selv savnet denne mulighed med brugerdefinerede funktioner.
Men, funktionen bruges sådan:
Den kan indsættes overalt ved i en celle at skrive:
=FindAntalDage(X;Y) hvor:
X = er en reference til den celle der indeholder navnet på måneden. Referencen skal skrives med $-tegn. ELLER måneden som litteral, dvs f.eks. "januar".
Y = er en reference til den celle der indeholder navnet på ugedagsmønsteret. ELLER ugedagsmønsteret som litteral, dvs f.eks. "MaTiOn".
Funktionen virker sådan:
For i = 1 To 12
If Choose(i, "januar", "februar", "marts", "april", "maj", "juni", "juli", _
"august", "september", "oktober", "november", "december") = LCase(sMåned) Then
lM = i
Exit For
End If
Next i
Ovenstående kode omregner den tekststreng der er inputtet som måned om til et tal 1-12.
lRow = 34
lCol = ((lM - 1) * 3) + 2
If lM > 6 Then
lRow = 74
lCol = ((lM - 7) * 3) + 2
End If
Ovenstående kode finder startrækken for ugedagene (de blå felter) i arket Kalender alt efter hvilken måned det er. lRow = 34 (jan-jun) eller 74 (jul-dec).
Kolonnenummeret (med tallene) findes også i de blå felter ud fra måneden.
Januar+Juli: lCol = 2 (B) Februar+August: lCol = 5 (E) osv
For i = 1 To Len(sMønster) Step 2
sTmp = LCase(Mid(sMønster, i, 2))
For j = lRow To (lRow + 6)
If LCase(Sheets("Kalender").Cells(j, lCol - 1)) = sTmp Then
Dage = Dage + Sheets("Kalender").Cells(j, lCol)
End If
Next j
Next i
Ovenstående loops er hele kernen i funktionen:
For i = 1 To Len(sMønster) Step 2
sTmp = LCase(Mid(sMønster, i, 2))
Der steppes igennem tekststrengen (ugedagsmønsteret) for hver 2 karakterer (Step 2)
og i variablen sTmp gemmes en ugedag ("ma","ti","on" osv)
For j = lRow To (lRow + 6)
If LCase(Sheets("Kalender").Cells(j, lCol - 1)) = sTmp Then
Dage = Dage + Sheets("Kalender").Cells(j, lCol)
End If
Next j
For hver ugedag (sTmp) løbes de 7 celler i arket Kalender der indeholder ugedagene:
If LCase(Sheets("Kalender").Cells(j, lCol - 1)) = sTmp Then
betyder: Hvis cellen(
række j=feks.34 til 40,
kolonne lCol-1) er lig sTmp, så:
Dage = Dage + Sheets("Kalender").Cells(j, lCol)
skal tælleren Dage forøges med det antal der står i cellen(
række j=feks.34 til 40,
kolonne lCol)
-Håber det giver mening. Det er svært at forklare.........