【问题标题】:Trigger event on TAB button click in Excel with VBA使用 VBA 在 Excel 中单击 TAB 按钮上的触发事件
【发布时间】:2019-10-24 12:51:34
【问题描述】:

我正在尝试在 excel 单元格中设置验证,以便没有人可以通过单击选项卡按钮将其留空。

因此,一旦用户单击带有空单元格的选项卡按钮,它就会显示一条消息。

你有什么线索吗?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If iKeyCode = vbKeyTab Then    
    If CancSelEvnt = False Then    
        MsgBox (1)        
    Else 
        If IsEmpty(Cells(Target.Row, 7).Value) = True Then   
            MsgBox ("This cell should not be kept empty.")    
        End If       
    End If    
End If

End Sub

只要用户从一个单元格移动到同一行中的另一个单元格(使用 tab 键),就想要任何错误消息

【问题讨论】:

  • 我不会等待 tab 按键,因为用户也可以按箭头键,对吧?也许只是添加全局变量来跟踪前一行/列并将 target.row 和 target.column 与那些进行比较?
  • 也许另一种方法是在数据验证中创建一个选项下拉列表,并将“忽略空白”设置为 false。然后每次用户想要离开单元格而不选择值时它都会抛出错误。

标签: excel vba


【解决方案1】:

运行这个命令:

Sub EnableTab()
    Application.OnKey "{TAB}", "TabPressed"
End Sub

并且每当 Tab 被按下时,TabPressed Sub 就会被执行:

Sub TabPressed()
    Debug.Print "MsgBox!"
End Sub

要禁用它,请运行:

Sub DisableTab()
    Application.OnKey "{TAB}", ""
End Sub

如果它应该在工作簿中,则考虑在工作簿的事件中写入Application.OnKey

【讨论】:

  • 另外值得注意(因为它每次都会让我失望):启用此功能后(在运行第一个代码后),无论您在哪个工作簿中,每次在 Excel 中按 TAB 时都会触发,它将在每个工作簿中触发,直到它被最后一个宏禁用,或者 excel 完全关闭。
猜你喜欢
  • 2013-05-11
  • 2014-01-14
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多