Creo que debieras tener unas variables para pasarle a la función Deduccion los siguientes parámetros:
Código:
Dim nSM As Single, nAnno as integer, nMes as integer, nDed As Single
Te creas una Function que reciba esos valores
Código:
Private Function Deduccion( SM As Single, Anno As Integer, Mes As integer) as Single
Dim PrimDiaMes as Date
Dim UltDiaMes As Date
Dim nLunes as Integer
PrimDiaMes = = CDate("01/" & Trim(Str(Mes)) & "/" & Str(Anno))
UltDiaMes = DateSerial(Year(PrimDiaMes), Month(PrimDiaMes) + 1, 0)
nLunes = 0
While PrimDiaMes <= UltDiaMes
If Weekday(PrimDiaMes) = vbMonday then nLunes = nLunes + 1
PrimDiaMes = PrimDiaMes + 1
Wend
Deduccion=SM * 12 / 52 * 4 / 100 * nLunes
End Function Asignas valor a las variables precisas:
Código:
nSM = 3256.45
nAnno = 2007
nMes = 4
Y obtienes la dedicción llamando a la función
Código:
nDed = Deduccion(nSM, nAnno, nMes)
Por supuesto, no tengo que decirte que te pongo el código en lenguaje de VB 6.0; espero que lo importante es la idea, y que ha de serte útil...