• DİKKAT

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

Textbox tarih formatı

Katılım
3 Temmuz 2005
Mesajlar
306
Excel Vers. ve Dili
excel 2021 tr
Slm,

Textboxta tarih girerken (gün.ay.yıl) gün ve ay yazıldıktan sonra noktalar otomatik yazılsın.

Örneğin;

17.12.2010 tarihini yazarken 17 yazdığımda nokta (.) otomatik yazılacak. Aynı şekilde ay yazarken de...
 
Slm,

Textboxta tarih girerken (gün.ay.yıl) gün ve ay yazıldıktan sonra noktalar otomatik yazılsın.

Örneğin;

17.12.2010 tarihini yazarken 17 yazdığımda nokta (.) otomatik yazılacak. Aynı şekilde ay yazarken de...

textbox'unuz userform'da ise userform'un kod bölümüne
Kod:
Private Sub TextBox1_Change()
With TextBox1
.SelLength = 1
If .SelText = "." Then
.SelStart = .SelStart + 1
.SelLength = 1
End If
End With
End Sub
Private Sub UserForm_Initialize()
With TextBox1
.MaxLength = 10
.EnterFieldBehavior = fmEnterFieldBehaviorRecallSelection
.Text = "##.##.####"
.SelStart = 0
.SelLength = 1
End With
End Sub
bunu yapıştırınız.
eki inceleyin
 

Ekli dosyalar

Syn. Rıdan ;
Aşağıdaki kodları kullanabilirsiniz.
Ekteki dosyayı inceleyin.
Kod:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If UserForm1.TextBox1 <> "" Then
If Len(TextBox1) < 8 Then
MsgBox "Eksik Rakam Girdiniz!.", vbExclamation
Else
TextBox1 = Format(TextBox1, "0#"".""##"".""####")
End If
End If
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
    Case Asc("0") To Asc("9")
    Case Else
    KeyAscii = 0
    MsgBox "Sadece rakam girebilirsiniz.", vbExclamation
    TextBox1.SelStart = Len(TextBox6)
    End Select
    TextBox1.MaxLength = 8
End Sub
 

Ekli dosyalar

İhsan bey, cevabınız için teşekkürler...

Ancak verdiğiniz kodlar, eğer yanlış tarih girip textbox içinde sağa ya da sola gidip düzeltmeye çalıştığımda sorun çıkarıyor. Tarihin bir bölümünü ya da hepsini silip tekrar yazmak istediğimde otomatik noktalama yapmıyor. Aslında amacım tarihi daha seri girebilmekti. "#" simgeleri olmasın.

Diğer iki husus;
- sayı ve noktadan "." başka veri girilmesin.
- Userform üzerinde tarih girilen textbox sayısı en az 15 tane.
 
Sn ynmcany, düzeltme yaparken problem çıkmakta. Öneğin; yılı tamamen silip tekrar yazmak istediğimde son iki rakam yazılamıyor. İlk mesajımda da belirttiğim gibi ENTER'lamadan önce noktalama olması daha pratik olacaktır.
 
Syn. Rıdan;
Bunu deneyin.
Dosya Ekte.
Kod:
Private Sub TextBox1_Change()
If UserForm1.TextBox1 <> "" Then
If Len(TextBox1) = 2 Then
TextBox1 = Format(TextBox1, "0#"".")
End If
If Len(TextBox1) = 5 Then
TextBox1 = Format(TextBox1, "0#"".""##"".")
End If
If Len(TextBox1) = 10 Then
TextBox1 = Format(TextBox1, "0#"".""##"".""####")
End If
End If
End Sub


Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
    Case Asc("0") To Asc("9")
    Case Else
    KeyAscii = 0
    MsgBox "Sadece rakam girebilirsiniz.", vbExclamation
    TextBox1.SelStart = Len(TextBox6)
    End Select
TextBox1.MaxLength = 10
    Exit Sub
End Sub
 

Ekli dosyalar

Çok teşekkürler ynmcany...İstediğim gibi oldu.

Artık kullananın yapacağı iş, tarih rakamlarını doğru girmek.. Yani geçerli olmayan bir tarih (ör. 32.01.2010 gibi) girildiğinde uyarı vermesi eklenirse daha güzel olacak.
 
Syn. Rıdan;
Birde deneyin.
Dosya Ekte
Kod:
If Len(TextBox1) = 4 Then
     If Mid(TextBox1, 4, 1) > 1 Then
         MsgBox "0 ile 1 arasında Bir Rakkam Giriniz.!!!"
         TextBox1 = Trim(WorksheetFunction.Substitute(TextBox1, Right(TextBox1, 1), ""))
     End If
End If

If UserForm1.TextBox1 <> "" Then
If Len(TextBox1) = 2 Then
TextBox1 = Format(TextBox1, "0#"".")
End If
If Len(TextBox1) = 5 Then
TextBox1 = Format(TextBox1, "0#"".""##"".20")
End If
If Len(TextBox1) = 10 Then
TextBox1 = Format(TextBox1, "0#"".""##"".""##")
End If
End If
End Sub


Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
    Case Asc("0") To Asc("9")
    Case Else
    KeyAscii = 0
    MsgBox "Sadece rakam girebilirsiniz.", vbExclamation
    TextBox1.SelStart = Len(TextBox6)
    End Select
TextBox1.MaxLength = 10
    Exit Sub
End Sub
 

Ekli dosyalar

Textbox formatlamak, çetrefelli bir iş olsa gerek. Verdiğiniz kodları denediğimde, örneğin 32.01.2010 tarihini girdiğimde kabul ediyor. Ayrıca tarih rakamlarını eksik bırakıp textboxtan çıktığımızda uyarı vermiyor.
 
Syn. Rıdan;
Textbox' taki eksik olan hatalı giriş uyarısını ekledim.
Eksik rakkam uyarısı için aşağıdaki kodu kullanın.
Kod:
If TextBox1 <> "" Then
If Len(TextBox1) < 10 Then
MsgBox "Eksik Rakkam girdiniz.!!!", vbExclamation
End If
End If
Bu kodu asıl dosyanızın yapısını bilmediğim için ben "Private Sub TextBox1_Exit()" Prosedürüne yazıp bir adet denetim (Buton) ekledim. Siz dosyanızın yapısına göre bu kodu başka prosedürlere yazarsınız.
Ekteki dosyayı inceleyin.
 

Ekli dosyalar

Son düzenleme:
Kodda hata var sanırım. 0 (sıfır) ile başlayan aylar girilmiyor. Ör. 31.01.2010 tarihini girmek istediğimde ay kısmında 0 yazdıktan sonraki rakamlar yazılamıyor.
 
alternatif olarak bunu denermisiniz.

kod aşağıdaki mesajda
 
Syn. Rıdan;
Dosyadaki hatayı düzeltim.
Dosyanız ekte.
 

Ekli dosyalar

Sn. halit3, hatalı bir tarih girildiğinde uyarı veriyor, ama düzeltmeye imkan vermiyor. Ne "delete", ne de "Backspace" tuşu ile düzeltme yapılabiliyor. Tarihi komple seçip silip yeniden yazmak gerekiyor.

----------------------

Sn. ynmcany, denemek için kullandığım tarih 31.02.2010... Ancak textboxta yazarken ya da çıktıktan sonra herhangi bir hata uyarısı almadım. Sizi de meşgul ettim. Kusura bakmayın...İçinizden siz de o kadar yanlış girmeyin diyebilirsiniz belki..
 
kod aşağıdaki mesajda
 
kod aşağıdaki mesajda
 
Gün ve ay yazıldıktan sonra nokta "." işareti otomatik konulsun. Asıl amacım ilk mesajdan beri öyleydi. Buraya kadar geldik. Otomatik noktalama işareti de olursa kod son şeklini almış olacaktır.

---------------------------

UserForm üzerinde en az 30 tane tarih yazılan textbox var. Bu uzun kodu tek tek hepsine yazmaktansa tek bir kodla referans veremez miyiz. UserForm'da tarih yazılan textbox'lar haricinde de textbox'lar mevcut.
 
Gün ve ay yazıldıktan sonra nokta "." işareti otomatik konulsun. Asıl amacım ilk mesajdan beri öyleydi. Buraya kadar geldik. Otomatik noktalama işareti de olursa kod son şeklini almış olacaktır.

---------------------------

UserForm üzerinde en az 30 tane tarih yazılan textbox var. Bu uzun kodu tek tek hepsine yazmaktansa tek bir kodla referans veremez miyiz. UserForm'da tarih yazılan textbox'lar haricinde de textbox'lar mevcut.

iki adet dosya var birisi naktayı kendisi koyuyor diğeri kendisi koymuyor

Açıklama : noktayı kendisi koyan silme işlemini yapmaz çünkü kısır döngüye giriyor kod iki karekter ve beş karakter sayı girilince otomatikmen nokta işareti koyuyor kod burada tek karekter silme yapılırsa kod kısır döngüye girecektir dolayısıyla iki veya daha fazla karekter silmek gerekecektir buda bloke silmekten başka çare bırakmıyor.
 

Ekli dosyalar

Geri
Üst