Supongamos lo siguiente: En "A2" una fecha y en "B2" el número de clases. Luego vamos a colocar los días tomando en cuenta lo siguiente: 1 es lunes y 7 es domingo; por lo tanto nos interesan el 1 el 3 y el 5 y por eso en "C2" colocaremos lo siguiente: "1,3,5" (sin las comillas por favor). Vamos a suponer, también, que queremos los días de clase debajo del día inicial ("A1").
Luego, nuestra macro sería así:
Sub CompletandoDias()
Dim Numerodedia As Integer, RestoDias As Integer, x As Integer, y As Integer, Valor As Integer
Dim UltimaFila As Long
Dim DiaD As Date
Dim Arraydedias As String, DiadeTrabajo() As String
Let DiaD = Range("A2")
Let Numerodedia = DateDiff("d", CDate("1/1/" & Year(DiaD)), DiaD) + 1
Let RestoDias = 365 - Numerodedia
Let Arraydedias = Range("C2")
DiadeTrabajo = Split(Arraydedias, ",")
For x = 1 To RestoDias
Let DiaD = DiaD + 1
For y = LBound(DiadeTrabajo) To UBound(DiadeTrabajo)
If Weekday(DiaD, vbMonday) = DiadeTrabajo(y) Then
Let UltimaFila = Cells(Rows.Count, 1).End(xlUp).Row
Range("A" & UltimaFila + 1) = DiaD
Let Valor = Valor + 1
End If
Next y
If Valor = Range("B2").Value - 1 Then
MsgBox "Listo"
Exit Sub
End If
Next x
End Sub
Si seguiste las instrucciones, tendrás el resultado esperado.
OJO, se puede mejorar haciendo que en "A2" solo se puedan ingresar fechar, en "B2" un número máximo de clases, que en "C2" máximo del 1 al 7, etc. pero eso ya queda en tus manos.
Salu2
Abraham Valencia