Tarih yazarken sadece gün girildiğine ay ve yıl otomatik tamamlansın

Katılım
3 Temmuz 2009
Mesajlar
81
Excel Vers. ve Dili
2010 pro plus türkçe
Altın Üyelik Bitiş Tarihi
02-06-2024
Tarih yazarken sadece gün girildiğine ay ve yıl otomatik tamamlansın. Bugün 12.05.2019. Sadece "12" yazıp, enter tıklayınca tarihi 12.05.2019 şeklinde otomatik tamamlasın.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,359
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Aşağıdaki kodları ilgili sayfanın kod bölümüne kopyayayıp kendinize göre uyarlayınız.
A sütununda yazılan değere göre tarihi belirler.

Not : Gün kontrolü yapılmamıştır.
Denemelerimde günü yazdığımda tarihe çeviriyor ama bir sonraki hücreyi de tekrar tarih biçiminde aldığı için kontroller çalışmıyor.
Bence en iyisi gün ve ayı yazmak daha sağlıklı olacaktır.

Sütun tarih olarak biçimlendirildiğinde sadece 2/5 ya da 2-5 yazmanız halinde tarihe otomatik dönüştürülecektir. 02.05.2019 gibi.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, [A:A]) Is Nothing Then Exit Sub
    If IsNumeric(Target.Value) Then
        Application.EnableEvents = False
        Target.Value = DateSerial(Year(Date), Month(Date), Target.Value)
        Application.EnableEvents = True
    End If
       
End Sub
 
Son düzenleme:

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,330
Excel Vers. ve Dili
2007 Türkçe
Merhaba Necdet Bey,
Kodunuzu If IsNumeric(Target.Text) Then şeklinde değiştirince bahsettiğiniz hatayı vermedi.
 
Katılım
20 Aralık 2023
Mesajlar
4
Excel Vers. ve Dili
16
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, [A:A]) Is Nothing Then Exit Sub
    If IsNumeric(Target.Text) Then
        Application.EnableEvents = False
        Target.Text = DateSerial(Year(Date), Month(Date), Target.Value)
        Application.EnableEvents = True
    End If
      
End Sub
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,359
Excel Vers. ve Dili
Ofis 365 Türkçe
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, [A:A]) Is Nothing Then Exit Sub
    If IsNumeric(Target.Text) Then
        Application.EnableEvents = False
        Target.Text = DateSerial(Year(Date), Month(Date), Target.Value)
        Application.EnableEvents = True
    End If
     
End Sub
Target.Text'i Target.Value olarak değiştirin yazın.
 

yyhy

Altın Üye
Katılım
3 Aralık 2005
Mesajlar
916
Excel Vers. ve Dili
Microsoft Office 2021 TR
Microsoft 365 TR
Altın Üyelik Bitiş Tarihi
20-03-2029
İyi akşamlar. Makroyu ilgili sayfanın kod bölümüne yapıştırdım. 3-4 satır doğru yazıyor daha sonra tarihi 01.12.1900 şeklinde yazıyor. Sorun ne olabilir acaba?
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,359
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
Tek tek inceledim, Evet sizin dediğiniz gibi 3 satırda doğru çalışıyor, 4. satırda excel girilen değerlerin tarih olduğunu anlayarak doğrudan hücre tarihmiş gibi örneğin 5 yazdığınızda 05.01.1900 e çeviriyor.

Buradan çıkardığım sonuç, tarihi tarih gibi girmek.
en azından gün ve ayı girmek gerek.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,359
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
biraz takla attım, sanırım çalışıyor.
Deneyenlerin sonucunu merak ediyorum.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, [A:A]) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    
    If IsDate(Target.Value) = True Then
        Target.Value = DateSerial(Year(Date), Month(Date), Day(Target.Value) + 1)
    ElseIf IsNumeric(Target.Value) Then
        Target.Value = DateSerial(Year(Date), Month(Date), Target.Value)
    End If
    Application.EnableEvents = True
      
End Sub
 

Erkan Akayay

Altın Üye
Katılım
8 Aralık 2006
Mesajlar
405
Excel Vers. ve Dili
Ofis 365 TR 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2028
Hücrelere eski tarih girmek istendiğinde ne olacak?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,193
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
@Erkan Akayay,

Soru 2019 yılında ilk sorulduğunda sadece gün girilerek ay ve yılın otomatik tamamlanması istenmiş. Başka detay verilmemiş. Bu durumda ben ay ve yılı aktif dönem diye yorumladım.
 

Erkan Akayay

Altın Üye
Katılım
8 Aralık 2006
Mesajlar
405
Excel Vers. ve Dili
Ofis 365 TR 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2028
@Erkan Akayay,

Soru 2019 yılında ilk sorulduğunda sadece gün girilerek ay ve yılın otomatik tamamlanması istenmiş. Başka detay verilmemiş. Bu durumda ben ay ve yılı aktif dönem diye yorumladım.
Korhan Bey zaten konuyu canlandırana sordum.
Eski tarih girmeyi engelleyen bir talep.
Alanlar doğru belirlenemezse sayı bile girilemeyecek.
Çözümü var ama sonucu sıkıntı.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,193
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kesinlikle katılıyorum..
 

yyhy

Altın Üye
Katılım
3 Aralık 2005
Mesajlar
916
Excel Vers. ve Dili
Microsoft Office 2021 TR
Microsoft 365 TR
Altın Üyelik Bitiş Tarihi
20-03-2029
Sayın @Korhan Ayhan hocam eklemiş olduğunuz ek dosyayı inceledim gayet başarılı. Ayrıca Sayın @Necdet hocam sizim yazmış olduğunuz kodu da denedim gayet başarılı. Sayın hocalarım ve arkadaşlar emekleriniz için teşekkür ederim. Benim için ihtiyaca cevap vermiştir.
 
Üst