2011-08-08 16 views
12

Excel VBA'da tarihle çalışırken büyük sorun yaşıyorum. Kullanıcının tarihi gireceği bir metin kutusu olan bir form var. Sorun, farklı formatlarda girebilmesidir (örneğin, 1 Ağustos için 1.08.2011 veya aynı gün için 8/1/11). Şimdi yapmak istediğim, TextBox'a girdiği tarihten itibaren bazı günleri çıkarmak. Şimdiye kadar başarıya ulaştım ve nasıl yapacağımı bilmiyorum. Ben datalivrare kullanıcı tarihini girer ve 4 O tarihten çıkarılacak istediğiniz gün sayısı olduğu metin kutusu olan buVBA'da bir tarihten nasıl çıkarılmalı?

Format((Format(Me.datalivrare.Value, "dd.mm.yyy") - 4), "dd.mm.yyyy") 

gibi bir şey denedim ... ve biçimi her zaman dd olmak istiyorum .mm.yyyy, bu metin kutusuna ne girerse girsinler.

+1

8/1/11'in 1 Ağustos veya 8 Ocak anlamına gelip gelmediğini nasıl ayırt edersiniz? –

cevap

6

iyi vba üzerinde tarihleri ​​eklemek ve substract için ayrıca, dateadd() (reddetme için negatif sayı ile) da, e xample kod biçim dizesi bir eksik y var Tarihi

+1

diğer yandan, kullanıcı girdisini mümkünse maskelenmiş bir metin kutusuyla bilinen bir formatta kısıtlamayı veya sadece veri doğrulamasını tavsiye ediyorum – Einacio

+0

Cevabınız için teşekkürler! –

5

İlk dökme (sadece, 1, 2 veya 4 y kabul eder), daha sonra gün çıkarma, daha sonra uygun bir şekilde biçimlendirmek:

Format(DateAdd("d", -4, CDate(Me.datalivrare.Value)), "dd.mm.yyyy") 
+0

Cevabınız için teşekkürler! –

1

Bu önemlidir

If isDate(Me.datalivrare.Value) Then 
    str_Date = Format(DateAdd("d", -4, CDate(Me.datalivrare.Value)), "dd.mm.yyyy") 
Else 
    MsgBox "Not a valid date value", vbCritical + vbOkOnly, "Invalid Entry" 
End If 

Ben bluefeet cevabı şimdiye kadar en çok bilgi vardı ve DATEADD ve CDate kullanımını ödünç düşünüyorum: kullanıcı VBA Bu nedenle, öncelikle gereken bir tarih olarak interprit bir değer girdiniz olmadığını kontrol edin.

İlgili konular