• DİKKAT

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

TEXTBOX`UN "##.##.####" GÖRÜNMESİ

  • Konbuyu başlatan Konbuyu başlatan Ongun
  • Başlangıç tarihi Başlangıç tarihi
Katılım
24 Mayıs 2005
Mesajlar
462
Excel Vers. ve Dili
Excel 2003 Türkçe
TEXTBOX`UN "##.##.####" GÃ?RÜNMESÝ

Arkadaşlar, merak ettiğim bir konu var. Textboxlara format atayabiliyoruz ve TextBox`un UserForm açıldığında ##.##.#### şeklinde tarih formatına uygun olarak görünmesini de sağlıyabiliyoruz.

Sorum şöyle, ##.##.#### bu format üzerinde rakam girdikçe altdaki formatın sırayla yok olmasını sağlıyabilirmiyiz. Bu mümkün mü?
Ã?rnek: 12.##.#### gün girildi sonra ay sonra yıl. gibi

Sevgi ve saygılarımla. Çalışmalarınızda başarılar dilerim. :hey:
 
Merhaba;

Aşağıdaki kodları UserForm modulüne yerleştirip, UserForm'u çalıştırın.

Bakalım, istediğiniz gibi bir şey mi oldu ?

[vb:1:2fd49491e6]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
.Text = "##.##.####"
.SelStart = 0
.SelLength = 1
End With
End Sub
[/vb:1:2fd49491e6]
 
Sayın Raider, siz bir harikasınız elinize sağlık çok güzel olmuş. Bu şekilde yapınca UserForm da çok güzel bir görüntü oluşuyor. Ayrıca formu kullanan kişiye textbox`a girilecek veri hakkında yol gösteriyor. Saygılarımla. :dua:

BİLGİ PAYLAÞTIKÇA ÇOÐALIR.
 
Sayın Raider, bir şey dikkatimi çekti. Yazılan tarih yanlış yazılır ve yeniden giriş yapmak gerekirse sağdan sola doğru silince veya fare ile silince ##.##.#### şeklinin tekrar görünmesini sağlamak mümkün müdür.? Teşekkür ederim.
 
Merhaba;

Biraz kestirme olucak ama, aşağıdaki kodu da ilave edin bence... herhangibir şey silindiğinde yeni baştan giriş yapmak zorunda kalır kullanıcı. O kadar da olsun artık ... :mrgreen:

[vb:1:cd7d517708]Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 8 Or KeyCode = 46 Then
With TextBox1
.MaxLength = 10
.Text = "##.##.####"
.SelStart = 0
.SelLength = 1
End With
End If
End Sub
[/vb:1:cd7d517708]
 
Sayın Raider, ne diyebilirim. iyi ki varsınız. Her şey gönlünüzce olsun. Çok teşekkürler. Gerçekten güzel bir format oldu. Saygılarımla. :dua:
 
Tekrar merhaba;

Kodun birazcık daha gelişmiş hali aşağıdadır.

Bu kez; klavyedeki sağ - sol okları ve sağdan sola doğru silmeye yarayan BackSpace tuşuna bastıkça, TextBox1 deki karakterler seçilebiliyor ve herhangibir karakteri silmek için DELETE tuşuna bastığınızda, o karakterin yerine # işareti çıkıyor. Bu işler yapılırken tarih formatındaki "." işaretini de silemiyorsunuz ki, bu da bir kolaylık tabii ... :mrgreen:

Bu arada; bu kodu kullanırken ... yukarıdaki son mesajımda önerdiğim TextBox1_KeyUp prosedurunu silebilirsiniz çünkü ona ihtiyacımız yok.

[vb:1:650ad60f5d]Private Sub TextBox1_Change()
With TextBox1
.SelLength = 1
If .SelText = "." Then
.SelStart = .SelStart + 1
.SelLength = 1
End If
End With
End Sub
'
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
On Error GoTo ErrHand:
With TextBox1
If KeyCode = vbKeyLeft Or KeyCode = vbKeyBack Then
KeyCode = vbKeySelect
.SelStart = .SelStart - 1
.SelLength = 1
ElseIf KeyCode = vbKeyRight Then
KeyCode = vbKeySelect
.SelStart = .SelStart + 1
.SelLength = 1
ElseIf KeyCode = vbKeyDelete Then
KeyCode = vbKeySelect
If .SelText = "." Then
.SelText = "."
Else
.SelText = "#"
End If
.SelStart = .SelStart - 1
.SelLength = 1
End If
End With
Exit Sub
ErrHand:
KeyCode = vbKeySelect
TextBox1.SelStart = 0
TextBox1.SelLength = 1
End Sub
'
Private Sub UserForm_Initialize()
With TextBox1
.MaxLength = 10
.Text = "##.##.####"
.SelStart = 0
.SelLength = 1
End With
End Sub
[/vb:1:650ad60f5d]
 
Sayın Raider, gerçekten harika oldu. Bende tebrik ediyorum. Harikasınız.
Kodlarınızı denedim çok güzel olmuş. Ancak, bir şey dikkatimi çekti. Textbox`lar arasında "ENTER" la geçiş yapınca ##.##.#### şeklindeki görüntü yazmaya başlayınca kayboluyor. Bunun bir çaresi varmıdır. ?
Ayrıca, UserForm`un Initialize olayına TextBox`ların hepsinin seçimini nasıl yaptırabiliriz. Yani birden fazla textbox`un da aynı şekilde görünmesini nasıl sağlıyabiliriz. Saygılarımla. Çok teşekkürler. :dua:
 
Ongun' Alıntı:
Ancak, bir şey dikkatimi çekti. Textbox`lar arasında "ENTER" la geçiş yapınca ##.##.#### şeklindeki görüntü yazmaya başlayınca kayboluyor. Bunun bir çaresi varmıdır. ?

Aşağıdaki kırmızı ilaveyi de kodlarınızda yerleştirin..

[vb:1:5cf1d9cc29]Private Sub UserForm_Initialize()
With TextBox1
.MaxLength = 10
.EnterFieldBehavior = fmEnterFieldBehaviorRecallSelection
.Text = "##.##.####"
.SelStart = 0
.SelLength = 1
End With
End Sub
[/vb:1:5cf1d9cc29]
 
sn Raider,
elinize sağlık,
çok güzel olmuş.

ancak end ve home tuşlarını da eklerseniz tadından yenmeyecek doğrusu
tam mask edit. :ok::
 
isakarakus' Alıntı:
sn Raider,
elinize sağlık,
çok güzel olmuş.

ancak end ve home tuşlarını da eklerseniz tadından yenmeyecek doğrusu
tam mask edit. :ok::

Teşekkür ederim .... hakkaten de tatlı bir şey oldu ... :mrgreen:

HOME ve END tuşlarının da ilave edildiği son durum aşağıdadır;

[vb:1:08d8584e85]Private Sub TextBox1_Change()
With TextBox1
.SelLength = 1
If .SelText = "." Then
.SelStart = .SelStart + 1
.SelLength = 1
End If
End With
End Sub
'
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
On Error GoTo ErrHand:
With TextBox1
If KeyCode = vbKeyLeft Or KeyCode = vbKeyBack Then
KeyCode = vbKeySelect
.SelStart = .SelStart - 1
.SelLength = 1
ElseIf KeyCode = vbKeyRight Then
KeyCode = vbKeySelect
.SelStart = .SelStart + 1
.SelLength = 1
ElseIf KeyCode = vbKeyDelete Then
KeyCode = vbKeySelect
If .SelText = "." Then
.SelText = "."
Else
.SelText = "#"
End If
.SelStart = .SelStart - 1
.SelLength = 1
ElseIf KeyCode = vbKeyHome Then
KeyCode = vbKeySelect
.SelStart = 0
.SelLength = 1
ElseIf KeyCode = vbKeyEnd Then
KeyCode = vbKeySelect
.SelStart = Len(TextBox1) - 1
.SelLength = 1
End If
End With
Exit Sub
ErrHand:
KeyCode = vbKeySelect
TextBox1.SelStart = 0
TextBox1.SelLength = 1
End Sub
'
Private Sub UserForm_Initialize()
With TextBox1
.MaxLength = 10
.EnterFieldBehavior = fmEnterFieldBehaviorRecallSelection
.Text = "##.##.####"
.SelStart = 0
.SelLength = 1
End With
End Sub
[/vb:1:08d8584e85]
 
sn Raider, elinize sağlık çok güzel bir çalışma. Çok teşekkür ederim. İyi ki varsınız.
Saygı ve sevgilerimle. :mutlu:
 
elinize sağlık çok kullanışlı olmuş başka bir yerde buna benzer bir şeye rastlamamıştım. peki böyle bir şeyi e-mail formatı içinde yapabilirmiyiz?
 
Geri
Üst