我在用戶窗體上有一個文本框。它是窗體上唯一的文本框。除了這個文本框外,還有三個標籤和兩個按鈕。基本上,我希望焦點在所有情況下都保留在此文本框中,除了其中一個按鈕被點擊的時刻之外,但我希望焦點回到文本框。這兩個按鈕都將「TakeFocusOnClick」和「TabStop」設置爲False。我在將焦點設置到文本框時遇到問題,這就是我更改這兩個設置的原因。Excel用戶窗體文本框行爲
一旦我改變了這些設置,文本框中的Enter鍵就停止了。我爲_AfterUpdate和_KeyPress爲文本框寫了事件,但它們不會觸發。正如你在代碼中看到的那樣,我已經註釋掉了將焦點設置到這個文本框的行。由於它是現在唯一可以關注的對象,因此這些行不是必需的(理論上)。當我允許其他物體聚焦時,這些線條沒有任何效果(儘管有這些SetFocus線,焦點切換到按鈕)。
這是代碼。這很簡單,除了Enter鍵不觸發事件。任何人都能看到爲什麼謝謝。
Private Sub btnDone_Click()
Application.Calculation = xlCalculationAutomatic
formMath.Hide
'Clear statistics
Range("attempts").Value = 0
Range("correct").Value = 0
Sheet5.Range("A2:W500").ClearContents
End Sub
Private Sub btnSubmit_Click()
recordAnswer
'formMath.txtAnswer.SetFocus
End Sub
Private Sub txtAnswer_AfterUpdate()
recordAnswer
'formMath.txtAnswer.SetFocus
End Sub
Private Sub txtAnswer_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 13 Then
recordAnswer
End If
End Sub
Private Sub UserForm_Initialize()
'Initialize manual calculation
Application.Calculation = xlCalculationManual
Application.Calculate
'Initialize statistics
Range("attempts").Value = 0
Range("correct").Value = 0
Sheet5.Range("A2:W500").ClearContents
'Initialize first problem
newProblem
End Sub
Sub recordAnswer()
'Update statistics
Dim attempts, correct As Integer
attempts = Range("attempts").Value
correct = Range("correct").Value
Range("results").Offset(attempts, 0).Value = attempts + 1
Range("results").Offset(attempts, 1).Value = lblTopNum.Caption
Range("results").Offset(attempts, 2).Value = lblBotNum.Caption
Range("results").Offset(attempts, 3).Value = lblBop.Caption
Range("results").Offset(attempts, 4).Value = Range("Answer").Value
Range("results").Offset(attempts, 5).Value = txtAnswer.Text
If (Range("Answer").Value = txtAnswer.Text) Then
Range("results").Offset(attempts, 6).Value = 1
Else
Range("results").Offset(attempts, 6).Value = 0
End If
'Update attempts and success
Range("attempts").Value = attempts + 1
Range("correct").Value = correct + 1
newProblem
End Sub
Sub newProblem()
Application.Calculate
formMath.lblTopNum.Caption = Range("TopNum").Value
formMath.lblBotNum.Caption = Range("BotNum").Value
formMath.lblBop.Caption = Range("ProbType").Value
formMath.txtAnswer.Value = ""
'formMath.txtAnswer.SetFocus
End Sub
對不起。不知道我應該接受評論。我沒有忽視任何事情。但我確實回去接受一些以前的帖子。感謝您的高舉。從現在開始我會繼續關注這個。 – Alex 2012-04-11 22:39:00
不,你不應該接受評論,但如果他們有道理,請遵循他們:)現在看你的問題:) – 2012-04-11 23:01:14