2011-07-13 44 views
5

我如何才能讓焦點在文本框中按下後在VBA形式進入後?保持專注於文本按enter

此代碼添加文本到列表框,我想繼續將重點放在文本框準備接收另一個項目。

當我點擊添加按鈕,它增加了文本到列表框和焦點返回到文本框,howerver當我按下ENTER它不會,即使辛苦也使用相同的代碼。任何建議?

這是我的文本框代碼:

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

    If KeyCode = 13 Then 
     CmdAddOtherAsset_Click 
    End If 

End Sub 

,這是我的按鈕的代碼:

Private Sub CmdAddOtherAsset_Click() 

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

    TxtOtherAsset.SetFocus 

End Sub 

我嘗試了幾種方法,但我不能夠返回焦點到文本框。按下Enter後,焦點轉到TabIndex中的下一個。

回答

4

從我的頭頂:嘗試邀請碼設置爲0。此外,使用KeyCodeConstants類(從核心庫),以確定進入什麼樣的價值關鍵。

像這樣:

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

刪除你試圖將焦點設置於其他子(TxtOtherAsset.SetFocus)線。

希望它爲你工作。我沒有測試它。

+0

這工作就像一個魅力。做出這個改變非常容易。我沒有測試其他答案,因爲這個看起來更簡單。它的工作。謝謝! – rubenploneda

+0

**'KeyCode = 0' - 這一行很棒!** 1-2小時我在Google上搜索,嘗試解決方案(甚至是絕望的,.NET或VB6相關的),測試其他事件,因爲我在'KeyDown'中失去了希望...沒有任何工作,直到我找到這個黃金職位! – ZygD

1

您使用的輸入作爲觸發捕捉更改文本框的關鍵?如果是這種情況,請嘗試更新後的事件。另外,請看一下On Exit事件。當我看,我發現它有一個取消參數。如果您仍然希望在按下事件中捕捉Enter鍵,則可能會出現On Exit事件以防止離開文本框。當然,這可能意味着你永遠陷入困境,可能需要設置一種允許退出的方式。