vba - 对单击的 OLE Checkbox 对象做出反应的 Excel VBA 也会锁定键盘 - 但为什么呢?
问题描述
我在工作表“FA 2.0 定价工作表”中有一个复选框“Check_Group”。我在所述工作表中定义了一个子例程,当用户单击它时,它会在其他地方更改一些值:
Private Sub Check_Group_Click()
Active = ActiveSheet.Name
Sheets("FA 2.0 Pricing Worksheet").Activate 'This activate has to happen here because there are some steps in a different routine where this checkbox has to be clicked programmatically
If ActiveSheet.OLEObjects("Check_Group").Object.Value = True Then
Sheets("FA 2.0 Risk Checklist").Range("UI_GROUP_RISK").Value = "No"
Else
Sheets("FA 2.0 Risk Checklist").Range("UI_GROUP_RISK").Value = "Yes"
End If
Sheets(Active).Select
End Sub
这就像一个魅力,除了我注意到一个特别烦人的副作用 - 键盘似乎在你点击后锁定!
我可以毫无问题地单击单元格并在工作表中导航,但是当我尝试输入(未受保护的)单元格时,它根本不会对我的按键做出反应。
我已经通过调试器确认EnableEvents和ScreenUpdating都打开了。
我可以通过单击另一个选项卡并返回来绕过这个问题 - 输入正常工作然后......在之前无法输入的完全相同的单元格中!我仍然想找到一个解决方案,而不仅仅是这种廉价的解决方法。
这是在 Excel 2016 中。
为什么我的子程序会锁定键盘?
解决方案
无需激活工作表即可执行代码。而且,当您在工作表代码模块中时,您可以使用Me
Private Sub Check_Group_Click()
Me.Range("UI_GROUP_RISK").Value = IIf(Me.Check_Group.Value, "No", "Yes")
End Sub
推荐阅读
- powershell - 在 powershell 工作流中传递凭据
- bootstrap-4 - 引导分页更新当前页面仅更新服务器端。我想要所有页面更新所以如何确定分页日期
- python - 标准化后显示网络输出的问题
- java - JAVA Regex - 如何过滤掉长度大于某个数字的整个字符串?
- reactjs - setState 不是从 CreateableSelect 的 onChange 方法触发的
- python - 使用哪个索引来访问 defaultdict 中的项目
- slack-api - 在 Conversations.History 中查找过去 14 天的消息
- timer - 如何在我的游戏中添加一个在我的角色死亡时不会重置的计时器
- mysql - Pandas to_sql 在追加到 mysql 表时丢弃行
- php - 当我在 html 中提交表单时,它被发送到 php 处理器,除了我的浏览器显示 500 错误