• DİKKAT

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

TextBox toplu format değiştirme

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,490
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
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.
 
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:
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.
 
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.
 
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.
 
Geri
Üst