我在Excel中有一個用戶表單,要求輸入用戶名和密碼。如果您按輸入,一旦您輸入密碼,它只是「選擇」下一個項目,即LogIn
按鈕,但不會按下它。您必須再次點擊輸入才能實際按下按鈕。EnterKey在VBA中按下按鈕Userform
我該如何做到這一點,當用戶按下他的鍵盤上的輸入登錄按鈕被按下,並且相關的代碼運行(Logincode_click
)?
我在Excel中有一個用戶表單,要求輸入用戶名和密碼。如果您按輸入,一旦您輸入密碼,它只是「選擇」下一個項目,即LogIn
按鈕,但不會按下它。您必須再次點擊輸入才能實際按下按鈕。EnterKey在VBA中按下按鈕Userform
我該如何做到這一點,當用戶按下他的鍵盤上的輸入登錄按鈕被按下,並且相關的代碼運行(Logincode_click
)?
使用文本框的Exit
事件處理程序:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Logincode_Click
End Sub
這似乎沒有工作。我應該在哪裏放這個代碼。在用戶表單的模塊中? – user2385809
是的,這是在UserForm的模塊中,並確保子文件名TextBox1_Exit對應於您的文本框的名稱。所以,如果你的文本框被稱爲'MyTextBox'那麼它應該是'Private Sub MyTextBox_Exit(...' –
但我認爲雅各布的答案比我的更精確,同樣需要在UserForm的模塊中命名和放置子例程。 –
你也可以使用文本框的啓用按鍵事件處理程序:
'Keycode for "Enter" is 13
Private Sub TextBox1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
Logincode_Click
End If
End Sub
Textbox1的就是一個例子。確保你選擇了你想要引用的文本框,並且Logincode_Click是你用這個代碼調用(運行)的一個例子。請務必參閱您的首選子對我
+1。這可能比我的答案更好或更準確,它也會在「Tab」鍵上觸發事件,或者通過鼠標單擊文本框。 –
@DavidZemens,我得到了'編譯錯誤:'過程聲明不符合具有相同名稱的事件或過程的描述,但我確定我沒有另一個名爲procedure的EnterTextBox。 'TextBox1 = EnterTextBox'和'Logincode_Click = CommandButton1_Click'在我的例子中。我會錯過什麼? – Mertinc
@Mertinc我會建議問你自己的問題:)如果你問一個好問題並且包含你正在使用的代碼,它會比以前更容易幫助你。這是不太可能的,任何人都不會迴應對其他人的問題回答3年的答案! –
這一個工作
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
Button1_Click
End If
End Sub
一定要避免「幻數」只要有可能,無論是通過定義自己的常量,或者使用內置的vbXXX常量。
在這種情況下,我們可以使用vbKeyReturn指示輸入鍵的鍵碼(更換YourInputControl和SubToBeCalled)。
Private Sub YourInputControl_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then
SubToBeCalled
End If
End Sub
這避免了兼容性問題,簡單的拼寫錯誤一整類,特別是因爲VBA大寫標識我們。
乾杯!
繼@佩恩的評論,並在情況下,鏈接中斷,您也可以通過按鈕的Default
屬性設置爲True
實現這一目標(您可以在屬性窗口中設置,開放擊中F4)
這種方式每當返回被擊中,VBA知道激活按鈕的點擊事件。同樣一個按鈕Cancel
屬性設置爲True
將導致該按鈕的點擊事件運行時ESC鍵擊(用於正常退出用戶窗體)
來源:奧利維爾Jacot-Descombes的答案在這裏訪問https://stackoverflow.com/a/22793040/6609896
在這裏,你可以簡單地使用:
SendKeys "{ENTER}"
在代碼鏈接到用戶名字段結束。
所以你可以跳過按ENTER鍵一次(一次)。
因此,下一個按鈕(此處爲「登錄」按鈕)將被激活。當你按一次ENTER(你想要的結果)時,它將運行與「登錄」按鈕鏈接的代碼。
這是http://stackoverflow.com/questions/22792836/press-enter-in-textbox-and-execute-button-function-in-vba(和另一個有更好的答案比任何這些) – Penn