VBA número de días entre 2 fechas

Resuelto
doom56530 Mensajes publicados 13 Estado Miembro -  
michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   -
Hola,

Estoy intentando calcular la diferencia entre dos fechas mediante una macro para una base de datos.
Consigo calcular esa diferencia en una sola línea. Uso el siguiente código:
Sub dif_date ()
Dim Dat1 as Date
Dim Dat2 as Date
Dim nbr_jr as Integer

Dat1 = Range("A1")
Dat2 = Range ("B1")

nbr_jr = Dat2 - Dat1

Range ("C1") = nbr_jr

End sub

Hasta aquí todo funciona como deseo.
Este cálculo debe hacerse sistemáticamente (para cada nueva entrada) cuando valido en un formulario.
Intento hacer un bucle pero cada vez falla.

Sub dif_date ()
Dim Dat1 as Date
Dim Dat2 as Date
Dim nbr_jr as Integer
Dim i as Integer
For i = 1 to 20
Dat1 = Range("A" & i)
Dat2 = Range ("B" & i)
nbr_jr = Dat2 - Dat1
Range ("C" & i) = nbr_jr
Next i
End sub

Si pudieras detectar mis errores o darme una idea para resolver mi problema, sería genial.

Gracias de antemano
Configuración: Windows 2000 Firefox 3.5.7

2 respuestas

  1. Aligator_427 Mensajes publicados 57 Estado Miembro 21
     
    Atención, debes verificar que tu resultado 'nbr_jr' sea positivo; de lo contrario fallará.

    PD: existe una función ya preparada para calcular la diferencia entre dos fechas: DateDiff("d",date1,date2)
    11
    1. Doudounet
       
      Con la construcción siguiente: "&DateDiff("d","2016/01/16","2016/01/10")", no funciona. ¿Por qué? ¿Dónde está el error? Gracias.
      0
    2. michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
       
      Bonjour

      DateDiff("d", "2016 / 01 / 10", "2016 / 01 / 16")
      0
  2. doom56530 Mensajes publicados 13 Estado Miembro
     
    gracias a ti, lo probé con DateDiff y funciona perfecto.
    0
    1. AMMOURI
       
      ¿Puedo saber por qué ponen la "d" al principio?
      0
    2. michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
       
      Hola,

      Extracto de la ayuda en línea de Excel sí, es gratis y útil

      DateDiff, función
      Ver también Ejemplo Particularidades

      Devuelve un valor de tipo Variant (Long) que indica el número de intervalos de tiempo entre dos fechas dadas.

      Sintaxis

      DateDiff(intervalo, fecha1, fecha2[, primer día de la semana[, primera semana del año]])

      La sintaxis de la función DateDiff comprende los siguientes argumentos con nombre:

      Elemento Descripción
      intervalo Cadena que representa el intervalo de tiempo utilizado para calcular la diferencia entre fecha1 y fecha2.
      fecha1, fecha2 De tipo Variant (Date), representan las dos fechas utilizadas en el cálculo.
      primerDíaDeLaSemana Opcional. Constante que especifica el primer día de la semana. Si no se especifica ningún valor, el valor predeterminado es domingo.
      PrimeraSemanaDelAño Opcional. Constante que especifica la primera semana del año. Si no se especifica ningún valor, la primera semana es la del 1 de enero.



      Valores

      El argumento intervalo puede tomar los siguientes valores:

      Valor Descripción
      yyyy Año
      q Trimestre
      m Mes
      y Día del año
      d Día
      w Día de la semana
      ww Semana
      h Hora
      n Minuto
      s Segundo
      0