我到处都是,找不到答案,所以我猜我不知道我在寻找什么-希望有人在这里能帮到我。
我创建了一个带有一系列复选框的用户表单,用于每天的出勤记录。每个要求的与会者都有一个复选框,宏将其转储到excel的日志中,依此类推,等等。
一切都很好,除了-使用箭头键在复选框之间移动会使其变为选中状态!
使用tab循环浏览不会这样做。
我注意到这只是在释放箭头键时。我很茫然。任何帮助将不胜感激。
答案 0 :(得分:1)
我有同样的问题。这是我解决的方法:
我使用了一个函数(arrowModerator)来处理所有这一切,因为对于其他复选框,如果arrowModerator为true,则发生其他事情。这是我的两个复选框的外观:
Public keyboard As Boolean ‘or Private keyboard as Boolean
Private Sub CB_3_Change()
Call arrowModerator(Visit2, -1, "3") ‘Visit2 is the name of my userForm
End Sub
Private Sub CB_4_Change()
Call arrowModerator(Visit2, -1, "4")
End Sub
Private Sub CB_3_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call arrowModerator(Visit2, CInt(KeyCode))
End Sub
Private Sub CB_4_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call arrowModerator(Visit2, CInt(KeyCode))
End Sub
Public Function arrowModerator(ByRef uForm As UserForm, keyboardInt As Integer, Optional cbString As String)
If keyboardInt = -1 Then
If keyboard = True Then
uForm.Controls("CB_" & cbString).value = False
keyboard = False
ElseIf uForm.Controls("CB_" & cbString).value = True Then
arrowModerator = True
End If
ElseIf keyboardInt > 36 And keyboardInt < 41 Then
keyboard = True
End If
End Function
当它们与_keyPress,_keyDown和_keyUp绑定在一起时,我发现(formName)_Change,_AfterUpdate,_Exit,_Enter的顺序非常混乱。我发现_Change事件发生在_keyUp事件之后,因此基本上上述过程捕获了“更改”(也就是将复选框转到.value = true)并将其反转。
答案 1 :(得分:0)