• DİKKAT

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

TEXTBOX BACKSPACE yada DELETE İLE SİLME HATASI

Katılım
28 Haziran 2007
Mesajlar
168
Excel Vers. ve Dili
OFFİCE 2016 (Türkçe)
UserForm içerisinde yer alan TextBox'lara sayısal veri girişi yapmaktayım.

Örneğin 123,45 şeklinde veri girişi yapıldıktan sonra hatalı olduğu düşünüp BACKSPACE veya DELETE ile tüm veri silindikten sonra fazladan BACKSPACE yada DELETE'ye basılması halinde UYGULAMA hata veriyor.

UserForm'da yer alan tüm textbox'lara bu hatanın önlenmesi için yazılabilecek kod nedir ve nereye yazılmalıdır?
 
Kullandığınız bir kod bloğu buna sebep oluyordur. Örnek dosya paylaşırsanız deneme yapılabilir..
 
İlginize teşekkür ederim.

tbdavadeğeri textbox'ı içinde yer alan veriyi silince hata verdiğinde DEBUG ile düzeltmeye girdiğimde bu kısımda hata alıyorum.

Aynı şekilde diğer textbox'larda da aynı hatayı alıyorum.

TextBox'lardaki tüm veri silinmiş olsa bile programın hata vermemesini, gerekirse silindikten sonra textbox'tan çıkılması halinde 0 yazmasını istiyorum.

Saygılarımla...

Private Sub tbdavadeğeri_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
tbreddeğeri.Value = Format(tbdavadeğeri.Value - tbkabuldeğeri.Value, "#,##0.00")
End Sub
 
Örnek dosya paylaşmadığınız için afaki cevap vermek durumundayım.

C++:
Private Sub tbdavadeğeri_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    On Error GoTo Son
    tbreddeğeri.Value = Format(tbdavadeğeri.Value - tbkabuldeğeri.Value, "#,##0.00")
    Exit Sub
Son: tbreddeğeri.Value = 0
End Sub
 
Dosya paylaşmakta sıkıntı yaşıyorum, çünkü Excel dosyam yaklaşık 50 sayfadan oluşuyor, onun için kusura bakmayın.

Buna rağmen sorunumu çözmeye yardımcı olduğunuz için teşekkür ederim.

0 yazdığında düzeltmesi zor olduğu için kodu aşağıdaki şekilde yapmak suretiyle çalıştırdım.

On Error GoTo Son
tbreddeğeri.Value = Format(tbdavadeğeri.Value - tbkabuldeğeri.Value, "#,##0.00")
Exit Sub
Son: tbdavadeğeri.SetFocus

İlginize teşekkür ederim.

Peki TextBox1 ve TextBox2'ye rakam girişi yapılırken TextBox3'de otomatik olarak hesap yapmayı sağlıyorum. KeyUp olayını bu nedenle kullanıyorum.

Amacım TextBox2'ye TextBox1'de yazılı olan veriden daha büyük veri girişi yapıldığında uyarı vermesi ve girişi engellemesini istiyorum.

Bu kodu tbkabuldeğeri'nin Change'sine yazdım olmadı, KeyUp'una yazdım olmadı, Exit'ine yaptım olmadı.

Bakındım ancak bulamadım, veri girişi sadece ondalıklı sayı şeklinde olmak zorunda, rakamların sayı değerlerini karşılaştırmakta sıkıntı oluyor anladımığım kadarı ile.

İlginize tekrar teşekkür ederim.

İf tbkabuldeğeri.Value > tbdavadeğeri.Value Then
MsgBox “KABUL DEĞERİ, DAVA DEĞERİ'nden BÜYÜK OLAMAZ.“, ”UYARI“
Else
tbreddeğeri.Value = Format(tbdavadeğeri.Value - tbkabuldeğeri.Value, "#,##0.00")
End İf
 
Alternatif:
Kod:
on error resume next
tbreddeğeri.Value = Format(tbdavadeğeri.Value - tbkabuldeğeri.Value, "#,##0.00")
If tbdavadeğeri.Value = "" Then tbreddeğeri.Value = 0
 
Kod:
If tbkabuldeğeri.Value > tbdavadeğeri.Value Then
Msgbox "KABUL DEĞERİ, DAVA DEĞERİ'nden BÜYÜK OLAMAZ."
exit sub
end if
on error resume next
tbreddeğeri.Value = Format(tbdavadeğeri.Value - tbkabuldeğeri.Value, "#,##0.00")
If tbdavadeğeri.Value = "" Then tbreddeğeri.Value = 0
 
Son düzenleme:
İlginize teşekkür ederim, ancak bunu yine KeyUp'a yazdığımda tbkabuldeğeri isimli textbox'a her tıklamada uyarı çıkıyor ne yazı ki?

Örnek veriyorum, tbdavadeğeri 100 iken tbkabuldeğerine 10. yazdıktan sonra yazılacak ilk rakamın 0'dan büyük olması halinde hata vermesini istiyorum,
 
Örnek dosyadan kastımız şudur...

Benzer sorunu oluşturan nesneler oluşturup tek sayfadan oluşan basit bir dosya simüle ederek paylaşabilirsiniz..
 
Keyup sorun çıkartıyor, Aşağıdaki kodu işinize yarar mı?
Kod:
Private Sub tbreddeğeri_Enter()
If CDbl(tbkabuldeğeri.Value) > CDbl(tbdavadeğeri.Value) Then
MsgBox "KABUL DEĞERİ, DAVA DEĞERİ'nden BÜYÜK OLAMAZ."
tbdavadeğeri.Value = Empty
tbdavadeğeri.SetFocus
Exit Sub
End If
tbreddeğeri.Value = Format(CDbl(tbdavadeğeri.Value) - CDbl(tbkabuldeğeri.Value), "#,##0.00")
End Sub
 
Geri
Üst