DateDiff () yanlış cevaplar üretiyor


0

DateDiffİki tarih arasındaki günlerde farkı bulmak için işlevi kullanacak bir parça kod yazmaya çalışıyorum . Daha sonra bu numarayı e-tablomda nereye veri girileceğini belirlemek için kullanacağım.

DateDiffFonksiyonu kullanırken problemlerle karşılaştım , bu yüzden yanlış gittiğim yerde çalışmayı denemek için, değişkenler kullanırken hala alabildiğim kadar basit oldum ama hala çalışmıyor.

Karşılaştığım sorun şu ki cevabı gün içinde üretmiyor ya da cevabı doğru değil. Örneğin, VBA aşağıdaki kodu çalıştırırken 24 cevabını verir.

Nereye yanlış gidiyorum / neyi yanlış yapıyorum?

 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)

Beklediğiniz gibi olup olmadıklarını görmek için değişkenleri çıkarmayı denediniz mi?
Burgi

@Burgi Hayır, değişkenleri yeniden yazdıktan sonra, bir sebepten dolayı, bir yıl boyunca Startt'ın 31-Dec-1905 ve DayValue'un 07-Dec-1905 olduğunu
Matthew

Yanıtlar:


2

Sen DateSerial Fonksiyonlar içeride yıl, ay veya gün işlevlerini gerekmez ve bağımsız değişken sırasını değiştirmek gerekir DateDifffonksiyonu

Bunu dene:

Sub test()
 Dim YearStart As Date

 YearStart = DateSerial(2016, 1, 1)
 DayValue = DateSerial(2016, 1, 8)
 MsgBox DateDiff("d", YearStart, DayValue)
End Sub

2

Değiştir:

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

ile:

YearStart = DateSerial(2016, 1, 1)

1

Kullanmalısın DateSerial(2016, 1, 1)

Kullanmak DateSerial(Year(2016), Month(1), Day(1))yanlış bir yaklaşımdır, Excel'e şunu söyler:

  • 2016'yı tarihe dönüştür (Excel tarih biçimi 1900’de başladıkça, 2016 1905’te bir yerdedir)
  • bu tarihin yıl bölümünü al (1905)
  • benzer şekilde ay ve gün
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.