Excel 我正在工作表中运行一个专用子系统。我可以点击一些东西来启用/禁用它吗?i、 我可以为按钮编程吗?

Excel 我正在工作表中运行一个专用子系统。我可以点击一些东西来启用/禁用它吗?i、 我可以为按钮编程吗?,excel,vba,Excel,Vba,这是我的密码。这是一个函数,当我单击单个未锁定的单元格时,它会将值增加1。我有一个问题,让它总是运行。有时它会运行,有时我必须打开代码并在最后一个端点子节点后按enter键。我需要的是一个刷新此代码的按钮,以便VBA工作 Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer Private Const MOUSEEVENTF_LEFTDOWN = &H2 Private

这是我的密码。这是一个函数,当我单击单个未锁定的单元格时,它会将值增加1。我有一个问题,让它总是运行。有时它会运行,有时我必须打开代码并在最后一个端点子节点后按enter键。我需要的是一个刷新此代码的按钮,以便VBA工作

Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     Dim Key As Integer

     If Target.Count > 1 Then Exit Sub

     Key = GetKeyState(MOUSEEVENTF_LEFTDOWN)

     If Key And 1 Then
        If IsNumeric(Target.Value) Then
           Target.Value = Target.Value + 1
           Application.EnableEvents = False
           Target.Resize(1, 2).Select
           Application.EnableEvents = True
        End If
        Cancel = True
    End If
End Sub

你觉得这个对我有用的简化代码怎么样

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Cancel = True
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

  If Target.Count > 1 Then Exit Sub

  If IsNumeric(Target.Value) Then
    Application.EnableEvents = False
    Target.Value = Target.Value + 1
    Target.Resize(1, 2).Select
    Application.EnableEvents = True
  End If
End Sub

为什么要使用鼠标事件?这是为了确保它不是从移动到那里的箭头键?它确保我有较少的可能性失败,但我改为下面的脚本,这似乎是更好的工作。谢谢你的智慧,安德兰。我把我的文件改成了这个,看起来效果不错。非常感谢。现在我遇到了另一个问题,我的一些形式,和不是自动求和(这很奇怪)。