• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

tarih aralığı giriş kontrolü makrosu...

  • Konbuyu başlatan Konbuyu başlatan gusepir
  • Başlangıç tarihi Başlangıç tarihi
Katılım
25 Kasım 2011
Mesajlar
23
Excel Vers. ve Dili
2013-TR
veri doğrulama, anladığım kadarıyla, 2003 sürümünde kullanılamayan birşey... bu durumda 2003 te de kullanılabilecek olması açısından, herhangi bir sütuna, tarih aralığı tanımlanarak veri doğrulama işlemini yapabileceğim ve hem de tarih giriş formatını belirleyebileceğim(GGAAYY gibi mesela) bir kod yazmak gerekiyor.. (bir önceki ayın ilk gününden bu ayın son gününe kadar olacak biçimde).. tarih formatı nı kontrol etmek ile ilgili kodları sitede buldum ama, tarih aralığını da eklemem gerek kullanıcının veri girişini kısıtlamak açısından... var mıdır böyle bir kodu bana yazabilecek olan, ustalar, şimdiden teşekkürler...
 
aşağıdaki makroyu uyarlayabilirseniz de gayet işimi görür mesela;



Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim DateStr As String

On Error GoTo EndMacro
If Application.Intersect(Target, Range("A4:A48")) Is Nothing Then
Exit Sub
End If
If Target.Cells.Count > 1 Then
Exit Sub
End If
If Target.Value = "" Then
Exit Sub
End If

Application.EnableEvents = False
With Target
If .HasFormula = False Then
Select Case Len(.Formula)
Case 4 ' e.g., 9298 = 9-Feb-1998
DateStr = Left(.Formula, 1) & "/" & _
Mid(.Formula, 2, 1) & "/" & Right(.Formula, 2)
Case 5 ' e.g., 11298 = 11-Feb-1998 NOT 2-Nov-1998
DateStr = Left(.Formula, 1) & "/" & _
Mid(.Formula, 2, 2) & "/" & Right(.Formula, 2)
Case 6 ' e.g., 090298 = 9-Feb-1998
DateStr = Left(.Formula, 2) & "/" & _
Mid(.Formula, 3, 2) & "/" & Right(.Formula, 2)
Case 7 ' e.g., 1231998 = 12-Mar-1998 NOT 23-Jan-1998, NOT 3-Dec-1998
DateStr = Left(.Formula, 1) & "/" & _
Mid(.Formula, 2, 2) & "/" & Right(.Formula, 4)
Case 8 ' e.g., 09021998 = 9-Feb-1998
DateStr = Left(.Formula, 2) & "/" & _
Mid(.Formula, 3, 2) & "/" & Right(.Formula, 4)
Case Else
Err.Raise 0
End Select
.Formula = DateValue(DateStr)
End If

End With
Application.EnableEvents = True
Exit Sub
EndMacro:
MsgBox "Tarihi GGAAYY formatında(boşluk bırakmadan) giriniz"
Application.EnableEvents = True
End Sub
 
Merhaba,

Siz kodları bir kenara bırakınız da, ne yapmak istediğinizi örnek dosya ekleyerek açıklayınız.
 
buyurun hocam ekli dosya içinde de anlatmaya çalıştım...
 

Ekli dosyalar

  • a.xlsx
    a.xlsx
    10.1 KB · Görüntüleme: 17
soru(nu)m çok mu saçmaydı yoksa çok mu zordu anlamadım... bi meraklısı çıkmamış yardım etmeye :)
 
Merhaba,

Sorunuz saçma değil. 2003 versiyonda veri doğrulama kullanılabiliyor. Dilediğiniz gibi kullanabilirsiniz.
 
soru(nu)m çok mu saçmaydı yoksa çok mu zordu anlamadım... bi meraklısı çıkmamış yardım etmeye :)

Merhaba,

Biraz sabırlı olmak gerek.

2003 te Korhan Bey'in de dediği gibi tarihle ilgili veri doğrulama var.

Ekteki Sarı alana veri doğrulama uygulanmıştır. İnceleyiniz.


Not : Yeni eklendi

Koşulla biçimlendirme + Makro

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Target, [A4:A30]) Is Nothing Then Exit Sub
    
    Target.NumberFormat = "m/d/yyyy"
End Sub
 

Ekli dosyalar

Son düzenleme:
peki, teşekkürler ederim efendim.. veri uygulama ile ilgili değilmiş sanırım, 2003 versiyonundaki sorunum... dediğiniz gibi, diğer kodları iptal edip sadece veri doğrulama yaptığım dosyada herhangi bi sorun yaşamadım... ancak devamı vardı soru(nu)mun... hem kod tanımlanıp hem de veri doğrulama yapılan bir hücre ya da aralıkta, giriş anında, önce doğrulama sonra da kod devreye giriyor... dolayısıyla tarih girişini nasıl kontrol edebilirim? yani; aralığı doğrulattım diyelim, ama aynı zamanda giriş formatını da (GG.AA.YYYY olarak) nasıl tanımlarız??
 
Merhaba,

7 Nolu mesajı tekrar inceler misiniz, hem Veri Doğrulama hem Makrolu çözüm. İşinize yarayacak mı, inceleyiniz.
 
Geri
Üst