Function DameFechasSemana(NUmeroSemana As Integer) As String Dim DiaPrimero As Date Dim DiaPrimeroEneroSemana, Contador, Resultado As String 'Aqui, Rafa pon el codigo para saber si el tio se ha pasado poniendo numero de semana 'es que ya no me acuerdo si es 52 o 53 ...o sea If NUmeroSemana > 53 Then DameFechasSemana = "No te pases, un año no tiene tantas semanas, joder: Has puesto " & NUmeroSemana & " como semana" Exit Function End If 'Esta siguiente linea es obvia, pero la pongo, por si deseamos 'cambiar el áño...en este caso siempre va a devolver '01/01/2003 DiaPrimero = DateSerial(Year(Date), 1, 1) 'Vemos a continuacion si el primero de Enero, es martes, miercoles etc 'Segun estas constantes: 'vbSunday 1 Domingo 'vbMonday 2 Lunes 'vbTuesday 3 Martes 'vbWednesday 4 Miércoles 'vbThursday 5 Jueves 'vbFriday 6 Viernes 'vbSaturday 7 Sábado 'Aqui lo veo.....: DiaPrimeroEneroSemana = Weekday(DiaPrimero, vbMonday) 'Ya sabemos en qué dia cae el 1 de Enero del año en curso For Contador = 6 To 0 Step -1 Resultado = Resultado & DateAdd("d", (NUmeroSemana * 7) - DiaPrimeroEneroSemana - Contador, DiaPrimero) & "***" Next DameFechasSemana = Resultado End Function Function pruebaRafa() MsgBox DameFechasSemana(3), vbInformation, "Resultados" End Function Option Compare Database Option Explicit Sub demo_mcdtmFechaInicioSemana() MsgBox mcdtmFechaInicioSemana(42, 2003) End Sub Public Function mcdtmFechaInicioSemana(ByVal bytSemana As Byte, ByVal intAño As Integer) As Date Dim dtmFechaCualquieraSemanaSeleccionada As Date Dim dtmTemporal As Date Dim dblDíasTranscurridosPrincipoSigloPasado As Double '#1/1/2000# es para conocer los días transcurridos desde el 31/12/1899 (esta fecha es la que parte de 1), _ hasta el primer día del año que se pasa por parámetro. '(bytSemana * 7)-7, conocer los días transcurridos desde la primera semana del año seleccionado hasta la semana _ indicada. dtmTemporal = ("1/1/" & intAño) dblDíasTranscurridosPrincipoSigloPasado = (dtmTemporal + ((bytSemana * 7) - 7)) 'Una vez conocido los días transcurridos, ya tenemos un fecha de dicha semana, con WeekDay conocemos el _ primer día de la semana. dtmFechaCualquieraSemanaSeleccionada = dblDíasTranscurridosPrincipoSigloPasado mcdtmFechaInicioSemana = dtmFechaCualquieraSemanaSeleccionada - _ WeekDay(dtmFechaCualquieraSemanaSeleccionada, vbMonday) + 1 End Function 'http://www.primax.nl/drivers/colorado_epp_36bit/direct9600/nt/p36_spnt.exe