hatalı tarih girişinde msgbox

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
takvim denetimi ile girdiğim tarihlerin belli kriterlere göre yanlış veri girişi yapıldığında, msgbox ile uyarı vermesini istiyorum, ben beceremedim. yardımcı olur musunuz?
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Denermisiniz
Kod:
Private Sub Calendar1_Click()
ActiveCell.Value = Calendar1.Value
ActiveCell.NumberFormat = "dd.mm.yy"
tarih = Calendar1.Value
If tarih < Range("b3").Value Then
MsgBox "Denetim Ba&#351;lang&#305;&#231; tarihinden k&#252;&#231;&#252;k tarih giremezsiniz"
ActiveCell.Value = ""
Unload Me
Exit Sub
ElseIf tarih > Range("b4").Value Then
MsgBox "Denetim Biti&#351; tarihinden b&#252;y&#252;k tarih giremezsiniz"
ActiveCell.Value = ""
End If
Unload Me
End Sub
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba, kodlarda hata g&#246;r&#252;nm&#252;yor ama &#231;al&#305;&#351;mad&#305;.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
hocam bende &#231;al&#305;&#351;m&#305;&#351;t&#305;
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
deneyiniz lütfen
12. mesajda güncellendiğinden silindi
 
Son düzenleme:

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba,
&#231;al&#305;&#351;t&#305;, fakat bir sorun var.
ben kodlar&#305; sayfan&#305;n kod b&#246;l&#252;m&#252;ne yazd&#305;&#287;&#305;m i&#231;in &#231;al&#305;&#351;mam&#305;&#351;t&#305;. &#231;&#252;nk&#252; bu userform, &#231;al&#305;&#351;ma kitab&#305;ndaki farkl&#305; sayfalarda farkl&#305; h&#252;cre gruplar&#305;nda &#231;al&#305;&#351;acak, dolay&#305;s&#305;yla userform kod b&#246;l&#252;m&#252;ne yazarsak di&#287;er sayfalarda kullanamay&#305;z.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
akl&#305;magelen tek &#351;ey activesheet.Range("b3") ve activesheet.Range("b4") olarak denemeniz daha emekliyorum (usta olmay&#305; b&#305;rak&#305;n daha &#231;&#305;rak olamy&#305;z vbede) ama akl&#305;ma gelen tek &#351;ey bu ba&#351;lang&#305;&#231; ve biti&#351; tarihleri ayn&#305; h&#252;crelerde ise

yada sebit ise takvim eklentisinin i&#231;ine g&#246;m&#252;n ba&#351;lang&#305;&#231; ve biti&#351; tarihlerini
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
6 kriterden 2si için msgbox tamam, devamı yok

merhaba
Takvimle girilen tarihlerin bir bölümünde hatalı giriş yapılınca msgbox çıkmasını sağlayabildim. ancak girilen tarihlerin kendi aralarında belirli sınırlamalar olduğu için bunlarla ilgili hata msgboxını nasıl yazmam gerekiyor?
her karşılaştırma için farklı prosedür mü yazmak gerekir?
içiçe "if" kulanmak gerektiğinde döngüyü nasıl kurarım?
"if" - "elseif" şeklinde devam etmek gerekirse bu nasıl olmalı?
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
If tarih < Range("b3").Value Then
MsgBox "Denetim Ba&#351;lang&#305;&#231; tarihinden k&#252;&#231;&#252;k tarih giremezsiniz"
ActiveCell.Value = ""
Unload Me
Exit Sub

ElseIf tarih > Range("b4").Value Then
MsgBox "Denetim Biti&#351; tarihinden b&#252;y&#252;k tarih giremezsiniz"
ActiveCell.Value = ""
Unload Me

ElseIf
if Range("b4").Value <> "" Then Range("b3").Value > Range("b4").Value

Msgbox "Ba&#351;lang&#305;&#351; tarihi biti&#351; tarihinden b&#252;y&#252;k olamaz"

ElseIf
if Range("b3").Value <> "" Then Range("b4").Value < Range("b3").Value
Msgbox "Biti&#351; tarihi Ba&#351;lang&#305;&#351; tarihinden k&#252;&#231;&#252;k olamaz"



End If


ko&#351;ul 3 ve d&#246;rt&#252;n o &#351;ekilde olmas&#305; gerekti&#287;ini varsayd&#305;m
5 ve 6 y&#305;da merak ettim.
vs.....
gibi

2,3,4) ActiveCell.Ofset komutu kullan&#305;labilir gibi....
daha evvel kullanmad&#305;m oy&#252;zden deneme yan&#305;lma ile bulunur.
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
Cells(ActiveCell.Row, 1).Select


5) kontrol tarihi giri&#351;i, ilgili ay&#305;n 1. g&#252;n&#252; &#351;eklinde g&#246;r&#252;nt&#252;lenmelidir (&#246;rnek: 17.04.07 i&#231;in 01.04.2007)

i&#231;in ilk g&#252;n ktfsini kullanabilirisniz
http://www.excel.web.tr/showthread.php?t=40538
 
Son düzenleme:
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
hocam daima
G: 1A Ba&#351;lang&#305;&#231;
H: 1A Biti&#351;
I: 2A Ba&#351;lang&#305;&#231;
J: 2A Biti&#351;

L: Kontrol Tarihi s&#252;tunumu

ilham geldi acil cevap
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
G ve H s&#252;tunlar&#305; 1. a&#351;ama i&#231;in ba&#351;lang&#305;&#231; ve biti&#351; s&#252;tunlar&#305;,
I ve J s&#252;tunlar&#305; 2. a&#351;ama i&#231;in ba&#351;lang&#305;&#231; ve biti&#351; s&#252;tunlar&#305; sabit. H kontrol s&#252;tunu sabit.

bu s&#252;tunlardaki her h&#252;creye tarih girilecek.

ElseIf Intersect(Target, [G5:G20,H5:H20,I5:I20,J5:J20]) <> "" And Intersect(Target, [G5:G20] < [H5:H20]) Then
MsgBox "biti&#351; tarihi ba&#351;lang&#305;&#231; tarihinden k&#252;&#231;&#252;k olamaz"
ActiveCell.Value = ""
Target.Activate

bu kodu ekleyince msgbox &#231;&#305;k&#305;yor ancak kapatam&#305;yorum, s&#252;rekli ayn&#305; msj veriyor. excel K&#304;L&#304;TLEN&#304;YOR!
 
Son düzenleme:
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Kod:
Private Sub Calendar1_Click()
ActiveCell.Value = Calendar1.Value
ActiveCell.NumberFormat = "dd.mm.yy"
Tarih = Calendar1.Value

If Tarih < Range("b3").Value Then
    MsgBox "Denetim Başlangıç tarihinden küçük tarih giremezsiniz"
    ActiveCell.Value = ""
ElseIf Tarih > Range("b4").Value Then
    MsgBox "Denetim Bitiş tarihinden büyük tarih giremezsiniz"
    ActiveCell.Value = ""
End If

If ActiveCell.Column = 8 Or ActiveCell.Column = 10 Then
    BsTr = ActiveCell.Offset(0, -1).Value
    Fark = Tarih - BsTr
    If Fark < 7 Then
    MsgBox "Bitiş tarihi başlangıç tarihinden 7 gün fazla olmalıdır"
    End If
End If

If ActiveCell.Column = 9 Then
    BsTr = ActiveCell.Offset(0, -1).Value
    Fark = Tarih - BsTr
    If Fark < 7 Then
    MsgBox "2. Aşama Başlangıç tarihi, 1. aşama bitiş tarihinden 7 gün fazla olmalıdır"
    End If
End If


Unload Me
End Sub
anladığım kadarı ile yaptım



4 kontrol tarihi, denetim tarihleri aralığında olmalıdır
5 kontrol tarihi girişi, ilgili ayın 1. günü şeklinde görüntülenmelidir (örnek: 17.04.07 için 01.04.2007)
6 denetim tarihi değişken olduğuna göre; takvimde, denetim tarihi ayı, başlangıç tarihi olarak seçilebilir mi?


4. isteğinizi yaparrım ama
5. isteğiniz ile çelişiyor
bstr1 = 15/08/2007, bttr1 = 27/08/2007 ise kontorl tarihini 01/08/2007 yaparsak kontrol tarihi denetim aralığı dışına taşıyor
ama kontrol tarihi bir sonraki aydan başlıyor ise ona bakarız...


6) anlamadım direk dtpickerle ilgili bir soru galiba
 
Son düzenleme:

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
4. ve 5. ko&#351;ul denetim ba&#351;lang&#305;&#231; tarihi istisnas&#305; hari&#231; &#231;eli&#351;ki yok. ilk ay i&#231;in sizin &#246;rnekte oldu&#287;u gibi tarih aral&#305;&#287;&#305; d&#305;&#351;&#305;na ta&#351;&#305;yor ancak, bu sorun de&#287;il. g&#246;r&#252;nen bu &#231;eli&#351;kiyi gidermek i&#231;in 01.08.2007 yazmas&#305; yerine a&#287;ustos 2007 yazarsa sorun kalmaz. (sonraki hesaplar&#305; 01.08.2007 ye g&#246;re yapmak &#351;art&#305;yla)
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
12. mesaja dosya eklendi
4,5 i d&#252;&#351;&#252;nmem laz&#305;m anlamad&#305;m
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
4. ve 5. koşul denetim başlangıç tarihi istisnası hariç çelişki yok. ilk ay için sizin örnekte olduğu gibi tarih aralığı dışına taşıyor ancak, bu sorun değil. görünen bu çelişkiyi gidermek için 01.08.2007 yazması yerine ağustos 2007 yazarsa sorun kalmaz. (sonraki hesapları 01.08.2007 ye göre yapmak şartıyla)
Kod:
Function ilkgün(tarih)
    ilkgün = Format(tarih - Day(tarih) + 1, "dd/mm/yyyy")
End Function
Function songün(tarih)
    songün = Format((DateSerial(Year(tarih), Month(tarih) + 1, 1)) - 1, "dd/mm/yyyy")
End Function
kodları ile M sütununa 01/08/2007 olarak otaomatik yazdırsak olmazmı?
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
L S&#252;tununda dtpicker &#231;al&#305;&#351;m&#305;yor burada Worksheet Selection Change kullan&#305;lacak galiba
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
1- G ve I s&#252;tununda, denetim ba&#351;lang&#305;&#231;- biti&#351; tarihleri aras&#305;nda herhangi bir tarih girilebilmeli, denetim ba&#351;lang&#305;&#231; tarihinden farkl&#305; giremiyorum.

2- userform kod sayfas&#305;na yazarsam di&#287;er sayfalar i&#231;in kullanamam, as&#305;l dosyada bir&#231;ok sayfa var ve hepsinde farkl&#305; bi&#231;imde kullan&#305;l&#305;yor.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
hocam daima
G: 1A Ba&#351;lang&#305;&#231;
H: 1A Biti&#351;
I: 2A Ba&#351;lang&#305;&#231;
J: 2A Biti&#351;

L: Kontrol Tarihi s&#252;tunumu

ben size bunun i&#231;in sordum
kodlar&#305; workshettselectioncahnage ta&#351;&#305;y&#305;p her sayfa i&#231;in ayr&#305; ayr&#305; d&#252;zenlemek laz&#305;m ama benimde &#231;&#305;kmam laz&#305;m

Kod:
Private Sub UserForm_Initialize()
Calendar1.Value = Range("b3").Value
End Sub
bu alt&#305;nc&#305; sorunun cevab&#305; ama buda i&#351;e yaramayacakt&#305;r b3 t&#252;m sayfalarda ba&#351;lang&#305;&#231; tarihi de&#287;ilse
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
syn hsayar, yard&#305;mlar&#305;n&#305;z i&#231;in te&#351;ekk&#252;r ederim.
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
Private Sub UserForm_Initialize()
Calendar1.Value = Range("b3").Value
End Sub

&#231;al&#305;&#351;ma kitab&#305;nda denetim ba&#351;lang&#305;&#231; ve biti&#351; tarihleri sabit oldu&#287;u i&#231;in yukar&#305;daki kod i&#351;e yarad&#305;, te&#351;ekk&#252;rler.
 
Üst