Textbox içerisinde telefon no formatı yerleştirme

Katılım
27 Aralık 2006
Mesajlar
254
Excel Vers. ve Dili
Excel Visual Basic 6.0
Altın Üyelik Bitiş Tarihi
09.07.2019
Sayın üstadlar ve arkadaşlar. Takıldığım konu şu; TextBox kutusu içerisine telefon numarası yazdığımda onun (000) 000 00 00 formatında yazması ve içerisine harf girmek istenildiğinde buna izin vermemesini istiyorum. Fakat bir kaç deneme yapmama rağmen bunu başaramadım. Şöyleki; TextBox kutusu içerisine normal olarak 2169999999 yazdığımda (216) 999 99 99 yazmasını istiyorum. bu kutuya yanlışlıkla harf girmek istenildiğinde bunu kabul etmemesini istiyorum. Yazdığım kodlar şöyle;

Private Sub TELEV_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TELEV = Format(TELEV, "(000) 000 00 00")
End Sub

Yazı karakteri girilmesin diye de;

Private Sub TELEV_Change()
Selection.NumberFormat="(000) 000 00 00"
If IsNumeric(TELEV.Value)Then
ExitSub
Else
TELEV=""
End If
End Sub

Bu kodları yazdığımda kutuyu temizleyip diger kutuya geçiyor.

Bu konu ile ilgili yardımlarınızı bekliyorum. Şimdiden teşekkür ederim.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Ekli dosyayı inceleyiniz.:cool:
Kod:
Private Sub TextBox1_AfterUpdate()
TextBox1.Text = Format(TextBox1.Text, "(000) 000 00 00")
End Sub

Private Sub TextBox1_Change()
If Not IsNumeric(Replace(Replace(Replace(TextBox1.Text, "(", ""), ")", ""), " ", "")) Then
    TextBox1.SetFocus
    TextBox1.SelStart = 0
    TextBox1.SelLength = Len(TextBox1.Text)
    MsgBox "Lütfen sayısal bir değer yazınız..!!"
End If
End Sub
 

Ekli dosyalar

Katılım
27 Aralık 2006
Mesajlar
254
Excel Vers. ve Dili
Excel Visual Basic 6.0
Altın Üyelik Bitiş Tarihi
09.07.2019
Teşekkür

Ekli dosyayı inceleyiniz.:cool:
Kod:
Private Sub TextBox1_AfterUpdate()
TextBox1.Text = Format(TextBox1.Text, "(000) 000 00 00")
End Sub

Private Sub TextBox1_Change()
If Not IsNumeric(TextBox1.Text) Then
    TextBox1.SetFocus
    TextBox1.SelStart = 0
    TextBox1.SelLength = Len(TextBox1.Text)
    MsgBox "Lütfen sayısal bir değer yazınız..!!"
End If
End Sub
Yardımlarınız için size çok teşekkür ederim. Fakat şöyle bir şey var. Rakkam da girmiş olsam Enter tuşuna bastığımda msgBox kutusundaki uyarı yine geliyor. Rakkam girildiğinde bunun aktif olmaması için bir formül yazılabilirmi?
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Bu kod textboxa metin girmenize engel olur.Zaten sizde sadece syısal değerler giricem textboxa demiştiniz.Bende o kodu yazdım.Yoksa dememişmiydiniz.Ben dediniz diye hatırlıyorum.Ben sayı giricem o otomatikman telefon formatı olarak kaydedecek demiştiniz.:cool:
 
Katılım
27 Aralık 2006
Mesajlar
254
Excel Vers. ve Dili
Excel Visual Basic 6.0
Altın Üyelik Bitiş Tarihi
09.07.2019
Haklısınız.

Bu kod textboxa metin girmenize engel olur.Zaten sizde sadece syısal değerler giricem textboxa demiştiniz.Bende o kodu yazdım.Yoksa dememişmiydiniz.Ben dediniz diye hatırlıyorum.Ben sayı giricem o otomatikman telefon formatı olarak kaydedecek demiştiniz.:cool:[/QUOTE

Elinize sağlık teşekkür ederim. Anlatmak istediğim şu; Tamam doğru, harf girdiğimde bu uyarıyı versin. O konuda tamam. Fakat telefon numarası da girsem formatına çeviriyor, sonra MsgBox kutusu yine çıkıyor sanki harf girmiş gibi tamam dedikten sonra bir alt kutuya geçiyor. Demek istediğim; harf yazdığımda bu uyarıyı versin ve kutunun içini temizlesin setfocus olayı çalışsın. kutuya rakkam girilmesi için hazırlasın. Ama rakkam girildiğinde bu uyarıyı vermeden bir alt kutuya geçsin. Bunu anlatmak istedim. Saygılarımla
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Bu kod textboxa metin girmenize engel olur.Zaten sizde sadece syısal değerler giricem textboxa demiştiniz.Bende o kodu yazdım.Yoksa dememişmiydiniz.Ben dediniz diye hatırlıyorum.Ben sayı giricem o otomatikman telefon formatı olarak kaydedecek demiştiniz.:cool:[/QUOTE

Elinize sağlık teşekkür ederim. Anlatmak istediğim şu; Tamam doğru, harf girdiğimde bu uyarıyı versin. O konuda tamam. Fakat telefon numarası da girsem formatına çeviriyor, sonra MsgBox kutusu yine çıkıyor sanki harf girmiş gibi tamam dedikten sonra bir alt kutuya geçiyor. Demek istediğim; harf yazdığımda bu uyarıyı versin ve kutunun içini temizlesin setfocus olayı çalışsın. kutuya rakkam girilmesi için hazırlasın. Ama rakkam girildiğinde bu uyarıyı vermeden bir alt kutuya geçsin. Bunu anlatmak istedim. Saygılarımla
Fakat telefon numarası da girsem formatına çeviriyor
Bunu anlamadım.Diğer söyledikleriniz zaten yapıyor tek farkı silmeyip ışıklandırıyor textboxı siz oraya direk numara girince zaten ışıklandırılmış alan kendiliğinden silinecek.Işıklandırma dağa iyi ne yazdığınızı görüyorsunuz.:cool:
 
Katılım
27 Aralık 2006
Mesajlar
254
Excel Vers. ve Dili
Excel Visual Basic 6.0
Altın Üyelik Bitiş Tarihi
09.07.2019
Anlaşmazlık oluyor

Bunu anlamadım.Diğer söyledikleriniz zaten yapıyor tek farkı silmeyip ışıklandırıyor textboxı siz oraya direk numara girince zaten ışıklandırılmış alan kendiliğinden silinecek.Işıklandırma dağa iyi ne yazdığınızı görüyorsunuz.:cool:[/QUOTE

Anlatamadım. Kısaca şöyle yazayım. TextBox kutusuna telefon numarasını girdiğim zaman bir alt kutuya geçtiğimde de yine " Lütfen sayısal bir değer yazın...!" uyarısını yazıyor. Tamam dedikten sonra bir alta geçiyor. Bunu anlatmak istedim. Yoksa diğer işlemlerde bir sıkıntı yok. Sadece doğru yazdığımda da bana " Lütfen sayısal bir değer yazın...!" uyarısını vermesin demek istiyorum. Sadece Yazı yazmaya kalkıştığımda bu uyarıyı versin, telefon numarası yazdığımda da vermesin. Eğer sizde bir denerseniz göreceksiniz. Telefon numarasını yazdığınızda Enter tuşuna basın size " Lütfen sayısal bir değer yazın...!" uyarısını verecek. Saygılarımla.
 
Son düzenleme:

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Dosyayı güncelledim .2 numaralı mesajdan indirebilirsiniz.:cool:
 
Katılım
27 Aralık 2006
Mesajlar
254
Excel Vers. ve Dili
Excel Visual Basic 6.0
Altın Üyelik Bitiş Tarihi
09.07.2019
Çok çok teşekkür ederim. Ellerinize sağlık. Demek istediğim buydu. Kolay gelsin.
 
Katılım
13 Haziran 2009
Mesajlar
486
Excel Vers. ve Dili
excel 2007 tr
Ekli dosyayı inceleyiniz.:cool:
Kod:
Private Sub TextBox1_AfterUpdate()
TextBox1.Text = Format(TextBox1.Text, "(000) 000 00 00")
End Sub

Private Sub TextBox1_Change()
If Not IsNumeric(Replace(Replace(Replace(TextBox1.Text, "(", ""), ")", ""), " ", "")) Then
    TextBox1.SetFocus
    TextBox1.SelStart = 0
    TextBox1.SelLength = Len(TextBox1.Text)
    MsgBox "Lütfen sayısal bir değer yazınız..!!"
End If
End Sub
Selam Sayın Hocam,
Kodunuzu alıp uyguladım,mükemmel çalışıyor,öğrenmek istediğim bir şey var müsaadenizle.
Bendeki bir formda bu kodu 4 tane TextBox da uyguladım,çalışıyor,lakin kod sayfası uzuyor,acaba 4 txb da kullanmak üzere fonksiyona çevrilebilir mi?
Ki eğer çevrilebilirse Çalışma Kitabımda bir modüle eklediğimde orada bulunan 10 dan fazla UserFormlarımda lazım olan en az 20 txb için içinde kullanmak işimi kolaylaştıracak..
Sevgilerimle.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Boş bir modüle aşağıdaki fonksiyonu yapıştırınız.
Kullanımı:
Kod:
If telefon(TextBox1) = False Then Exit Sub
If telefon(TextBox2) = False Then Exit Sub
Fonksiyon:
Kod:
Function telefon(nesne As Control) As Boolean
If Not IsNumeric(Replace(Replace(Replace(nesne.Value, "(", ""), ")", ""), " ", "")) Then
    nesne.SetFocus
    nesne.SelStart = 0
    nesne.SelLength = Len(nesne)
    MsgBox "Lütfen sayısal bir değer yazınız..!!"
    telefon = False
    Exit Function
End If
telefon = True
 
Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Ekli dosyayı inceleyiniz.:cool:
Kod:
Private Sub TextBox1_AfterUpdate()
TextBox1.Text = Format(TextBox1.Text, "(000) 000 00 00")
End Sub

Private Sub TextBox1_Change()
If Not IsNumeric(Replace(Replace(Replace(TextBox1.Text, "(", ""), ")", ""), " ", "")) Then
    TextBox1.SetFocus
    TextBox1.SelStart = 0
    TextBox1.SelLength = Len(TextBox1.Text)
    MsgBox "Lütfen sayısal bir değer yazınız..!!"
End If
End Sub
Sayın Orion1 hocam,
sizi bulmuş iken sorayım dedim. format içine sayıyı # şeklinde ifade ediyoruz. Format(deger , "#.###") gibi. Peki Metin için herhangi bir ifade biçimi var mıdır?
mesela 123ABC1234'ü 123 ABC 1234 göstermek gibi. Belki tam anlatamadım ama siz çözersiniz.
Teşekkür ederim.
 

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,651
Excel Vers. ve Dili
Excel : 2010
İstediğiniz böyle bir şey mi?
Kod:
000 "ABC" 0000
Hücre Biçimlendirme > İsteğe Uyarlanmış
 
Katılım
26 Ekim 2016
Mesajlar
16
Excel Vers. ve Dili
Excel 2016 Türkçe
Excel 2013 Türkçe
Ekli dosyayı inceleyiniz.:cool:
Kod:
Private Sub TextBox1_AfterUpdate()
TextBox1.Text = Format(TextBox1.Text, "(000) 000 00 00")
End Sub

Private Sub TextBox1_Change()
If Not IsNumeric(Replace(Replace(Replace(TextBox1.Text, "(", ""), ")", ""), " ", "")) Then
    TextBox1.SetFocus
    TextBox1.SelStart = 0
    TextBox1.SelLength = Len(TextBox1.Text)
    MsgBox "Lütfen sayısal bir değer yazınız..!!"
End If
End Sub


Hocam Excelde personel takiple ilgili bir program yaptım. Excelde telefon numaralarının olduğu sütunu (000) 000 00 00) bu formatında biçimlendirerek kullanıyordum ve program arayüzünde numaralar bitişik çıkıyordu. Sizin kodu uygulayıp yeni kayıt akledikten sonra kaydı arayüze getirdiğimde biçimlendirilmiş formatta görünüyor ama daha önce oluşturduğum binlerce kayıt excel sayfında doğru formatta görünmesine rağmen uygulama arayüzünde (0000000000) şeklinde bitişik görünüyor. Her bir kaydı arayüze çağırıp teelfon numarasını yeniden yazarak güncelleyince sorun çözülüyor ama kayıt sayısını düşününce bu çok fazla zaman gerektiriyor.
Kodu harf girişini engellemek için aşağıdaki şekliyle güncelledim ma yukarıda behsettiğim sorunla yardımcı olabilir misiniz?

Private Sub txtPhone_AfterUpdate()
txtPhone.Text = Format(txtPhone.Text, "(000) 000 00 00")
End Sub

Private Sub txtPhone_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
' Sadece rakamlara ve kontrol karakterlerine izin ver
If Not IsNumeric(Chr(KeyAscii)) And Not KeyAscii = vbKeyBack Then
KeyAscii = 0
MsgBox "Lütfen sadece sayısal değer giriniz!"
End If
End Sub
 
Üst