Option Compare Database Option Explicit Public Function CambioHorarioInvierno(ByVal datDia As Date) As Date '----------------------------------------------------------------------------------------------------------------------------------------------- ' Fuente : https://access-global.net/vba-horario-de-verano '----------------------------------------------------------------------------------------------------------------------------------------------- ' Título : CambioHorarioInvierno ' Autor original : Emilio Sancha ' Adaptado por : Luis Viadel | https://cowtechnologies.net ' Propósito : Conocer la fecha de cambio de horario de invierno(ultimo domingo de Octubre) ' Retorno : Valor date con el día que cambia la hora ' Argumento/s : La sintaxis del procedimiento o función consta del siguiente argumento: ' Parte Modo Descripción '----------------------------------------------------------------------------------------------------------------------------------------------- ' datDia Obligatorio Número de días del mes (31) '----------------------------------------------------------------------------------------------------------------------------------------------- 'Test: : Para adaptar este código en tu aplicación puedes basarte en este procedimiento test. Copiar el bloque siguiente al ' portapapeles y pega en el editor de VBA. Descomentar la línea que nos interese y pulsar F5 para ver su funcionamiento. ' 'Sub CambioHorarioInvierno_test() ' 'Debug.Print CambioHorarioInvierno(#1/1/2022#) ' 'End Sub '----------------------------------------------------------------------------------------------------------------------------------------------- Dim bytDia As Byte Dim intAño As Integer intAño = Year(datDia) bytDia = 31 datDia = DateSerial(intAño, 10, bytDia) ' busco el ultimo domingo (primero empezando por el final) Do While Weekday(datDia) <> vbSunday datDia = DateSerial(intAño, 10, bytDia) bytDia = bytDia - 1 Loop CambioHorarioInvierno = datDia End Function Public Function CambioHorarioVerano(ByVal datDia As Date) As Date '----------------------------------------------------------------------------------------------------------------------------------------------- ' Fuente : https://access-global.net/vba-horario-de-verano '----------------------------------------------------------------------------------------------------------------------------------------------- ' Título : CambioHorarioVerano ' Autor original : Emilio Sancha ' Adaptado por : Luis Viadel | https://cowtechnologies.net ' Propósito : Conocer la fecha de cambio de horario de verano(ultimo domingo de marzo) ' Retorno : Valor date con el día que cambia la hora ' Argumento/s : La sintaxis del procedimiento o función consta del siguiente argumento: ' Parte Modo Descripción '----------------------------------------------------------------------------------------------------------------------------------------------- ' datDia Obligatorio Número de días del mes (31) '----------------------------------------------------------------------------------------------------------------------------------------------- 'Test: : Para adaptar este código en tu aplicación puedes basarte en este procedimiento test. Copiar el bloque siguiente al ' portapapeles y pega en el editor de VBA. Descomentar la línea que nos interese y pulsar F5 para ver su funcionamiento. ' 'Sub CambioHorarioVerano_test() ' 'Debug.Print CambioHorarioVerano(#1/1/2022#) ' 'End Sub '----------------------------------------------------------------------------------------------------------------------------------------------- Dim bytDia As Byte Dim intAño As Integer intAño = Year(datDia) bytDia = 31 datDia = DateSerial(intAño, 3, bytDia) ' busco el ultimo domingo (primero empezando por el final) Do While Weekday(datDia) <> vbSunday datDia = DateSerial(intAño, 3, bytDia) bytDia = bytDia - 1 Loop CambioHorarioVerano = datDia End Function Public Function CalculoGMT(ByVal datDia As Date) As String '----------------------------------------------------------------------------------------------------------------------------------------------- ' Fuente : https://access-global.net/ '----------------------------------------------------------------------------------------------------------------------------------------------- ' Título : CalculoGMT ' Autor original : Luis Viadel | https://cowtechnologies.net ' Propósito : Conocer el GMT en el que nos encontramos ' Retorno : Valor string con la descripción del GMT actual ' Argumento/s : La sintaxis del procedimiento o función consta del siguiente argumento: ' Parte Modo Descripción '----------------------------------------------------------------------------------------------------------------------------------------------- ' datDia Obligatorio Fecha en la que queremos saber su GMT '----------------------------------------------------------------------------------------------------------------------------------------------- 'Test: : Para adaptar este código en tu aplicación puedes basarte en este procedimiento test. Copiar el bloque siguiente al ' portapapeles y pega en el editor de VBA. Descomentar la línea que nos interese y pulsar F5 para ver su funcionamiento. ' 'Sub CalculoGMT_test() 'Dim gmt as date ' 'gmt= CalculoGMT(MiFecha) ' 'End Sub '----------------------------------------------------------------------------------------------------------------------------------------------- If datDia > CambioHorarioInvierno(datDia) And datDia < CambioHorarioVerano(datDia) Then GMT = "+01:00" Else GMT = "+02:00" End If End Function Sub CambioHorarioVerano_test() Debug.Print CambioHorarioVerano(#1/1/2022#) End Sub