Hangi tuşa basıldığını bilebilmek

Katılım
28 Temmuz 2004
Mesajlar
275
Yazdığım kodda kullanıcının bastığı tuşa göre yönlenme yaptırmak istiyorum. Mesela Backspace'e basmışsa döngüden çıkacak vb. Bunun için basılan tuşu okutturabileceğimiz bir komut filan var mıdır? inkey gibi, keypress gibi, getkey gibi bir şey.

Aslında benzeri bir soru daha öncede sorulmuş ama cevap yeterli olmamış. Arama yapmadan yazmadım yani.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
hangi soruydu o ?
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Peki, tam olarak yapmak istediğiniz olayla ilgili kodu yapıştırabilirmisiniz ? Yani, bir TextBox içindeyken falan mı tuşu denetlemek istiyorsunuz ?
 
Katılım
28 Temmuz 2004
Mesajlar
275
Private Sub Tarih_Change()
If ........... = vbKeyBack Then
If Len(Tarih) = 2 Then Tarih = Tarih + "."
If Len(Tarih) = 5 Then Tarih = Tarih + "."
If Len(Tarih) = 10 Then Tarih = Left(Tarih, 10)
End If
End Sub


Tarihin formatını exit ile değil de change de daha yazılırken denetlemek istiyorum. Bunun için yukarıdaki koddan yararlanmayı düşünüyorum. Ancak kullanıcı Backspace'e basmışsa silmek istiyordur ve her tuşa basılmasında bir karakter silinmelidir. Ben bunu eğerle diyemezsem yanlış yazdığı tarihi backspace'le silemiyor.
 
Katılım
28 Temmuz 2004
Mesajlar
275
İlgisiz ama ben VB kodları yazmak için VB kutucuğunun üzerine fareyi getirince 'Çalışma zamanı hatası' veriyor. Neyi yüklemem, açmam veya kliklemem lazım.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Kodları Tarih_Change yerine, Tarih_KeyPress olayına yazıp da çalıştırsanız olur mu acaba ?
 
Katılım
28 Temmuz 2004
Mesajlar
275
İşgüzarlık mı yapıyorum bilmem ama konu bütünlüğü olsun istedim. Kodun son hali.

Private Sub Tarih_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii <> vbKeyBack Then
If Len(Tarih) = 2 Then Tarih = Tarih + "."
If Len(Tarih) = 5 Then Tarih = Tarih + "."
If Len(Tarih) = 10 Then Tarih = Left(Tarih, 10)
End If
End Sub
 
Üst