TextBox toplu format değiştirme

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,311
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Altın Üyelik Bitiş Tarihi
31-01-2026
Sayın yöneticilerimiz. Çok özür diliyorum. Aslında buna benzer konu açmıştım.
Ama tamamen yanlış anlattım ve başlık dahi anlamsız olmuştu. Tekrar açtım, lütfen mazur görün.
TextBox format biliyorum ama. Çok sayıda TextBox var. Mesela 1'den 120'ye kadar. Tarih formatı nasıl yazdırılır.
Normalde bunu kullanıyorum
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1 = Format(TextBox1, "dd.mm.yyyy dddd")
End Sub
Ama tek tek yazmak istemiyorum.
Şimdiden teşekkür ederim.
Tekrar özür dilerim.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,358
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Önereceğim iki tane çözüm yolu var. Birincisi kodlamalarınızın daha düzgün olmasını sağlayacak(gerekli açıklamaları öneri içinde yaptım), ikincisi ise daha pratik bir yol ama kod düzenine katkı sağlamayacaktır.

1. Bütün Tarih TexBox larının adının başına yada sonuna o "Tarih" yazarak (Örnek: TarihTextBox1) Hangi metin kutusunun tarih içerdiğini belirtmek gerek.
Aşağıdaki kod isminin başında "Tarih" yazan ve form üzerinde bulunun bütün TexBoxların formatını tarih formatına çevirir.

Kod:
Sub Test()
Dim txt As Control
For Each txt In Me.Controls
    If TypeName(txt) = "TextBox" And Strings.Left(txt.Name, 5) = "Tarih" Then
        txt = Format(txt, "dd.mm.yyyy dddd")
    End If
Next
End Sub
Burada önemli bir konuya değinmek istiyorum. Kullandığınız kontrollerin isimlerini zaten anlamlı bir şekilde değiştirmenizi öneririm.
Örneğin ben şahsen böyle bir durumda Texboxların isimlerini şu şekilde değiştirirdim.

txtTarihKayit (txt= bu kontrolün metin kutusu olduğunu belirtiyor)
txtTarihOnay
txtTarihDogum
btnKaydet (btn= bu kontrolün Buton olduğunu belirtiyor). Gibi.

Form üzerine eklediğimiz kontrollere anlamlı isimler verirseniz kod yazanın kodları, hem okumasını hem de yazmasını kolaylaştırır.
2. Diğer önerim.
Form üzerinde bulunan bütün TextBox lar kontrol edilir eğer içeriğindeki değer tarihse istenilen formata çevirilir.

Kod:
Sub Test()
Dim txt As Control
For Each txt In Me.Controls
    If TypeName(txt) = "TextBox" And IsDate(txt.Text) Then
        txt = Format(txt, "dd.mm.yyyy dddd")
    End If
Next
End Sub
 
Son düzenleme:

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,311
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Altın Üyelik Bitiş Tarihi
31-01-2026
Merhaba.

Önereceğim iki tane çözüm yolu var. Birincisi kodlamalarınızın daha düzgün olmasını sağlayacak(gerekli açıklamaları öneri içinde yaptım), ikincisi ise daha pratik bir yol ama kod düzenine katkı sağlamayacaktır.

1. Bütün Tarih TexBox larının adının başına yada sonuna o "Tarih" yazarak (Örnek: TarihTextBox1) Hangi metin kutusunun tarih içerdiğini belirtmek gerek.
Aşağıdaki kod isminin başında "Tarih" yazan ve form üzerinde bulunun bütün TexBoxların formatını tarih formatına çevirir.

Kod:
Private Sub CommandButton1_Click()
Dim txt As Control
For Each txt In Me.Controls
    If TypeName(txt) = "TextBox" And Strings.Left(txt.Name, 5) = "Tarih" Then
        txt = Format(txt, "dd.mm.yyyy dddd")
    End If
Next
End Sub


2. Diğer önerim.
Form üzerinde bulunan bütün TextBox lar kontrol edilir eğer içeriğindeki değer tarihse istenilen formata çevirilir.

Kod:
Private Sub CommandButton1_Click()
Dim txt As Control
For Each txt In Me.Controls
    If TypeName(txt) = "TextBox" And IsDate(txt.Text) Then
        txt = Format(txt, "dd.mm.yyyy dddd")
    End If
Next
End Sub

Hocam öncelikle teşekkür ederim. Commandbutton derken. Tıklamak mı gerekiyor. Birde hocam bana sayı gerekiyor. Mesela TextBox5 den TextBox 50 ye kadar.
Saygılarımla.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,358
Excel Vers. ve Dili
2019 Türkçe
Commandbutton u ben kullandım. Siz kodun nerede çalışmasını istiyorsanız oraya kopyalamalısınız.

Kaç tane TextBox olduğunun önemi yok. Yukarıda önerdiğim iki öneriden birini kullanabilirsiniz.
 

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,311
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Altın Üyelik Bitiş Tarihi
31-01-2026
Commandbutton u ben kullandım. Siz kodun nerede çalışmasını istiyorsanız oraya kopyalamalısınız.

Kaç tane TextBox olduğunun önemi yok. Yukarıda önerdiğim iki öneriden birini kullanabilirsiniz.
Teşekkür ederim hocam.
 
Üst