DateDiff () produzindo respostas imprecisas

0

Eu estou tentando escrever um pouco de código que usará a função DateDiff para obter a diferença em dias entre duas datas. Em seguida, usarei esse número para determinar onde inserir dados na minha planilha.

Eu me deparei com problemas usando a função DateDiff , então tente descobrir onde estou indo errado, e continuei usando as variáveis, mas ainda não está funcionando.

O problema que estou tendo é que não está produzindo a resposta em dias ou a resposta não é precisa. Por exemplo, ao executar o código abaixo, o VBA produz uma resposta de 24.

Onde estou indo errado / o que estou fazendo errado?

 Dim DayValue As Date
 Dim YearStart As Date

 YearStart = DateSerial(Year(2016), Month(1), Day(1))
 DayValue = DateSerial(Year(2016), Month(1), Day(8))
 strong textMsgBox DateDiff("d", DayValue, YearStart)
    
por Matthew Johnston 08.01.2016 / 12:32

3 respostas

2

Você não precisa das funções ano, mês ou dia dentro das Funções DateSerial e precisa alternar a ordem dos argumentos para a função DateDiff

Tente isto:

Sub test()
 Dim YearStart As Date

 YearStart = DateSerial(2016, 1, 1)
 DayValue = DateSerial(2016, 1, 8)
 MsgBox DateDiff("d", YearStart, DayValue)
End Sub
    
por 08.01.2016 / 12:54
2

Substituir:

YearStart = DateSerial(Year(2016), Month(1), Day(1))

com:

YearStart = DateSerial(2016, 1, 1)
    
por 08.01.2016 / 12:55
1

Você deve usar DateSerial(2016, 1, 1)

Usar DateSerial(Year(2016), Month(1), Day(1)) é uma abordagem incorreta, diz ao Excel:

  • converta 2016 para uma data (como o formato de data do Excel começa em 1900, 2016 está em algum lugar em 1905)
  • obtenha a parte do ano desta data (1905)
  • da mesma forma também com mês e dia
por 08.01.2016 / 12:55