2011-07-13 26 views
5

VBA formuna girmeye bastıktan sonra odağı nasıl bir kutuda tutabilirim?Enter tuşuna bastıktan sonra metin kutusuna odaklanmaya devam edin

Bu kod metni bir Liste Kutusuna ekler ve başka bir öğeyi almaya hazırlanmak için odağı metin kutusunda tutmak istiyorum.

ben Ekle düğmesini tıklayın

, ben değil, hatta sert aynı kodu kullanır gelmez enter tuşuna howerver zaman, liste kutusu metin ekler ve metin odağı döndürür. Herhangi bir öneri?

Bu

metin benim kodudur:

Private Sub TxtOtherAsset_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 

    If KeyCode = 13 Then 
     CmdAddOtherAsset_Click 
    End If 

End Sub 

ve bu benim düğme için kod: Ben çeşitli yollar denedim

Private Sub CmdAddOtherAsset_Click() 

    If TxtOtherAsset.Text <> "" Then 
     ListAddedAssets.AddItem TxtOtherAsset.Text 
     TxtOtherAsset.Text = "" 
    End If 

    TxtOtherAsset.SetFocus 

End Sub 

ama dönmek mümkün değilim metin kutusuna odaklanın. Enter'a bastıktan sonra, odak tabIndex'te bir sonraki gider.

cevap

4

Başımın üst kısmından: KeyCode'u 0'a ayarlamayı deneyin. Ayrıca, Enter anahtarının hangi değerin olduğunu belirlemek için (Core kitaplığından) KeyCodeConstants sınıfını kullanın. Bunun gibi

:

If KeyCode = KeyCodeConstants.vbKeyReturn Then 
    CmdAddOtherAsset_Click 
    KeyCode = 0 
End If 

diğer alt (TxtOtherAsset.SetFocus) odak ayarlamak için çalışıyoruz hattını sökün.

Umut sizin için çalışıyor. Ben test etmedim.

+0

Bu bir çekicilik gibi çalıştı. Bu değişikliği yapmak son derece kolaydı. Diğer cevabı test etmedim çünkü bu çok daha basit görünüyordu. Ve çalıştı. Teşekkürler! – rubenploneda

+0

** 'KeyCode = 0' - bu hat inanılmaz! ** 1-2 saat Ben 'KeyDown' içinde umudunu kaybettim gibi, diğer olayları test, çözümler (hatta umutsuz olanlar, .NET veya VB6 ile ilgili) çalışıyor, googling oldu ... Bu altın yazıyı bulana kadar hiçbir şey işe yaramadı! – ZygD

1

Metin kutusundaki değişiklikleri yakalamak için Enter tuşunu tetikleyici olarak mı kullanıyorsunuz? Durum buysa, Update Update olayını deneyin. Ayrıca, On Exit olayına bir göz atın. Baktığımda, bir İptal parametresi olduğunu fark ettim. Anahtar Aşağı olayında hala Enter tuşuna basmak istiyorsanız, metin kutusundan çıkmasını önlemek için Çıkış durumunda etkin olabilir. Tabii ki, bu muhtemelen kalıcı olarak takıldığın ve çıkmaya izin verecek bir yol ayarlaman gerektiği anlamına gelir.