Excel VBA Sağ İşlev Hatası


0

Bir metin veritabanından indirdiğim verilerden alınan tarih aralığına göre Excel'deki raporumun üstündeki tarih aralığını otomatik olarak güncellemeye çalışıyorum. Aşağıda listelenen makroda '13' çalışma zamanı hatası alıyorum: tür uyuşmazlığı açık PEndDt = Right(PaidDateRange, 8).

Bence Date değişkeni, PEndDt, String almaktan hoşlanmıyor. Ancak, diğer makrolardaki Date değişkenlerine dize atadım! Şimdi bunu nasıl düzelteceğim. Yardım lütfen.

Sub test()

Dim PEndDt As Date
Dim PaidDateRange As String

PaidDateRange = "PAID DATE  1/01/13 -  9/31/13"
PEndDt = Right(PaidDateRange, 8)
Range("A1") = "Report thru " & Format(PEndDt, "Long Date")

End Sub

Yanıtlar:


2

Sorun dizede.

9/31/13 geçerli bir tarih değil.

31.09.2013 de geçerli bir tarih değil.


+1 İyi Yakala, dizeyi ayrıştırmak ve DateSerial () kullanmak için gönderimi güncelledim
Portland Runner

Teşekkür ederim! Bazı zamanlar kodun içine o kadar kapıldım ki, Eylül ayında 31 gün olmadığı gerçeği gibi basit şeyleri özlüyorum. Benim makro şimdi çalışıyor.
irockyoursocks

1

Dizeyi ay, gün, yıl biçiminde ayrıştırmanız gerekecek

Dim itemDate as String
itemDate = Right(PaidDateRange, 8)

PEndDt = DateSerial(Right(itemDate, 2), Left(itemDate, 2), Mid(itemDate, 4, 2))

Sadece bir dizgeye geri koyuyorsanız, neden tarihe dönüştürebilirsiniz?

Range("A1") = "Report thru " & Right(PaidDateRange, 8)

Bir tarih türü değişkenine dönüştürmeyi seçtim, böylece baştaki boşluk kaybolacaktı. Bu verileri bir metin veritabanından aldığım için tarihin önünde bir boşluk olabilir. Bu boşluğu işlemenin en kolay yolu, bir Tarih formatı değişkeni kullanmaktır. Herhangi bir ek kod olmadan "9/01/13" ü "9/1/2013" e çevirir. Aynı zamanda "12/01/13" 'ün doğru ayrıştırılmasını sağlar.
irockyoursocks
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.