TextBox1'den çıkınca veri hatalı ise tekrar TextBox1'e girsin

Katılım
20 Eylül 2005
Mesajlar
216
Excel Vers. ve Dili
Excel 2003 Türkçe
TexBox1'e öğrenci numarası giriyorum. Numara bulunamadı uyarısından sonra başka TextBox'a gitmesin. Yeniden TextBox1'e girsin. Başka bir numara yazarak yenden deneyeyim. İlgileneceklere teşekkürlerimi sunuyorum
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,354
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Merhaba,
Koşul uyduğunda,
Kod:
Cancel = True
ilave edin.
 
Katılım
20 Eylül 2005
Mesajlar
216
Excel Vers. ve Dili
Excel 2003 Türkçe
Cancel=True kodunu Denedim olmuyor.
Aşağıdaki gibi 15 tane TextBox ve Kod vardır. Örneğin TextBox1'e öğrenci numarası giriyorum. Enter'a basınca TextBox2'ye geçsin ama, aranan numarayı bulamazsa TextBox2'ye geçmesin TextBox1 seçili kalsın. Çünkü aynı yere başka bir numara gireceğim.

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Sheets("Kütük").Select
On Error GoTo hata
Columns("C:C").Find(What:=DosyaistemeFormu.TextBox1, LookAt:=xlWhole).Activate 'Numarasını bulur
DosyaistemeFormu.Label1 = ActiveCell.Offset(0, 1).Value
Sheets("DosyaGonder").[C16] = ActiveCell.Offset(0, 1).Value
Sheets("DosyaGonder").[E16] = ActiveCell.Offset(0, -2).Value & ActiveCell.Offset(0, -1).Value
Sheets("DosyaGonder").[F16] = ActiveCell.Offset(0, 0).Value
hata:
Me.TextBox1.SetFocus
If Err = 91 Then
MsgBox ("Birinci Numara bulunamadı.")
End If
End Sub
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki gibi kullanırsanız olacaktır.

Kod:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
Sheets("Kütük").Select
On Error GoTo hata
Columns("C:C").Find(What:=DosyaistemeFormu.TextBox 1, LookAt:=xlWhole).Activate 'Numarasını bulur
DosyaistemeFormu.Label1 = ActiveCell.Offset(0, 1).Value
Sheets("DosyaGonder").[C16] = ActiveCell.Offset(0, 1).Value
Sheets("DosyaGonder").[E16] = ActiveCell.Offset(0, -2).Value & ActiveCell.Offset(0, -1).Value
Sheets("DosyaGonder").[F16] = ActiveCell.Offset(0, 0).Value
exit sub
hata:
MsgBox ("Birinci Numara bulunamadı.")
cancel=true
End Sub
 
Katılım
20 Eylül 2005
Mesajlar
216
Excel Vers. ve Dili
Excel 2003 Türkçe
Sayın leventm, Teşekkür ediyorum.
Aynı hata devam ediyor. Diğer TextBox'lara girdiğim anda daha numara girmeden Numara bulunamadı uyarısı alıyorum.

Örneğin TexBox5'i seçecek yani aktifleştirecek yani TextBox5'i veri girişine hazır hale getirecek kod nasıl yazılır?
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Dosyanızı eklerseniz daha net cevap vermek mümkün olacaktır.
 

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
merhaba.
Bence bu denetimi commandbutton'a yazdığınız kodlarda denemeniz dağa uygun olur.
CommandButtonun ilk satırlarına Kodları yazın bulunumadı ise textbox'ı seçtirin.
TextBox1.setfocus
 
Katılım
20 Eylül 2005
Mesajlar
216
Excel Vers. ve Dili
Excel 2003 Türkçe
Sayın Leventm,
DosyaGonder sayfasındaki butonu tıklayınca açılan form üzerindeki TextBox'lardan bahsediyorum

Dosya büyük olduğu için göndermek istemiyordum. Mademki dosyayı ekliyorum. Proğram hakkıdaki tavsiyeleriniz ve eleştirileriniz bana yol gösterecektir. Parola 123
 
Katılım
20 Eylül 2005
Mesajlar
216
Excel Vers. ve Dili
Excel 2003 Türkçe
merhaba.
Bence bu denetimi commandbutton'a yazdığınız kodlarda denemeniz dağa uygun olur.
CommandButton'a yazmak çözüm olabilir ama, TextBox'a Öğrenci numarasını her girişimde Label'da ismini görüyorum. Ve yanlış numara uyarısını anında alıyorum. CommandButton kullandığımda bu şansa sahip değilim. Yada her numara girişinden sonra bir buton tıklaması yapmak zaman alacaktır.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Sn Orhan bey

Dosyanızda ne istediğinizi userform ve textbox adı belirterek bir örnekle açıklarmısınız. İstediğiniz "Dosya isteme" userformunda örneğin "Numara1" isimli textboxa bir no girdiğinizde karşısında bulunan "sn1txt" ve "no1txt" textboxlarının aktif hale gelmesinimi istiyorsunuz.
 
Katılım
20 Eylül 2005
Mesajlar
216
Excel Vers. ve Dili
Excel 2003 Türkçe
DosyaistemeFormu'nda bulunan Numara1 TextBox'ına Öğrenci Numarasını yazıyorum ve Entırlıyorum. Numara2 TextBox'ına geçiyor. Numara2'ye aynı şekilde Öğrenci Numarası giriyorum, Numara3'e geçiyor....

Ancak
Eğer Girdiğim Numara kayıtlarımızda yoksa Numara Bulunamadı uyarısı veriyor. İşte o an ben Mauz kullanarak tekrar Numara3'ten Numara2'ye geçmek zorunda kalıyorum. Numara2'den Numara3'e geçmesin. Bende Mauz kullanarak geri dönmek zorunda kalmayayım. Çünkü O TextBox'a başka bir numara gireceğim.

DevamFormu'nda ve OzelListeFormu'nda da aynı sorunu yaşıyorum.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki kodu deneyin. Msgboxı kaldırdım bu setfocusu engelliyordu. eğer no bulunmazsa imleç textboxtan ayrılamıyor.

Kod:
Private Sub Numara1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Set s1 = Sheets("Kütük")
If Numara1 = "" Then Exit Sub
On Error GoTo hata
sat = s1.[c1:c65536].Find(Numara1).Row
isim1 = s1.Cells(sat, "d")
Sheets("DosyaGonder").[C16] = s1.Cells(sat, "d")
Sheets("DosyaGonder").[E16] = s1.Cells(sat, "a") & s1.Cells(sat, "b")
Sheets("DosyaGonder").[F16] = s1.Cells(sat, "c")
Exit Sub
hata:
Cancel = True
End Sub
 
Katılım
20 Eylül 2005
Mesajlar
216
Excel Vers. ve Dili
Excel 2003 Türkçe
Teşekkür ederim. Leventm
Denedim. İstediğimden daha iyi bir sonuç çıktı ortaya.

Columns("C:C").Find(What:=DosyaistemeFormu.Numara1, LookAt:=xlWhole).Activate
yerine aşağıdaki verdiğiniz kodu kullanmak hızı arttırdı.
sat = s1.[c1:c65536].Find(Numara1).Row

Ancak, Verdiğiniz kodu aşağıdaki şekilde değiştirmek durumunda kaldım.
sat = s1.[c1:c65536].Find(Numara1,LookAt:=xlWhole).Row
 
Üst