excel - 如何使用 Excel 在 VBA 中禁用 ListView 控件中的箭头键
问题描述
我正在用 Excel 编写一个 VBA 应用程序。我需要使用 ListView 控件,因为这似乎是对列表中显示的不同行使用不同颜色的唯一方法。我需要根据在 Listview 控件中选择的行类型来启用/禁用表单上的按钮。如果我使用鼠标单击行,这将完美运行 - 我有一个 Listview1_Click 例程,如下所示:
Private Sub Listview1_Click()
DeleteSelected.Enabled = False
EditSelected.Enabled = False
If comspec(Listview1.SelectedItem.Index) <> "HbA1c" Then
DeleteSelected.Enabled = True
EditSelected.Enabled = True
End If
End Sub
但是,如果我使用向上和向下箭头键,焦点似乎会在 ListView 控件中从一行移动到下一行,但当然按钮保持不变。我得出的结论是,解决此问题的唯一方法是禁用 ListView 控件中的箭头键。似乎没有捕获箭头键的 ListView 事件 - 我尝试使用 ListView1_KeyDown 如下:
Private Sub Listview1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal shift As Integer)
If KeyCode = vbKeyUp or KeyCode = vbKeyDown Then KeyCode = vbNull
End Sub
但它会引发编译错误 - 我认为 ListView 控件无法识别 KeyDown 事件。任何帮助将不胜感激。
非常感谢。
解决方案
我认为这是 vba keydown 函数的正确签名。
它与该签名一起使用:
Private Sub ListView1_KeyDown(KeyCode As Integer, ByVal Shift As Integer)
If KeyCode = vbKeyUp Or KeyCode = vbKeyLeft Or KeyCode = vbKeyDown Or KeyCode = vbKeyRight Then KeyCode = vbNull
End Sub
推荐阅读
- android - 将单选按钮选择从主要活动传递到第二个活动——Kotlin
- python - 如何在不使用 del 的情况下从列表中删除多个元素
- excel - 在短语中搜索单词
- json - UML 如何表示 JSON 文件
- wordpress - 添加短代码的功能
- python - TensorFlow 推理到 logits 层 - 用于预训练模型上的批次
- netbeans - 在 NetBeans 8.2 中恢复视图
- java - DecimalFormat ("$0.00") 添加零,而不是将小数放在应该去的地方
- javascript - 为什么我无法从 google maps places api 的标记中获取坐标?
- c++ - 使用矩阵到 PMG 的棋盘