VBA脚本或其他自动按下按钮的东西

时间:2020-09-03 08:34:34

标签: excel vba

是否可以制作VBA脚本或其他可以自动按下其中带有宏的按钮的东西?

例如,如果单元格(1:I)中有WAAR,按钮(计划清单)是否会自动按下(见图)?

不一定要这样,如果您知道其他内容也可以。

enter image description here

3 个答案:

答案 0 :(得分:1)

您可以使用Worksheet_Change事件来触发宏。因此,您必须创建sub并从Worksheet_Change事件中调用它。 Sub将与Planning Button相同。检查以下代码

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("I1")) Is Nothing Then
    If Target = "WAAR" Then
        Call MyMacro
    End If
End If
End Sub


Sub MyMacro()
    MsgBox "Value is entered to I1 cell"
End Sub

答案 1 :(得分:1)

否,不可能自动“按下按钮”。

但是,我认为“按钮”后面的代码是这样的:

Sub CommandButton_Click(Target as Range)
...
End Sub

您可以做的是创建一个启动此过程的宏,但是您遇到了问题,有人何时启动该宏?在那里,您自己(或多或少)提供了答案:当单元格“ I1”达到某个值时。但是,这是不可能的:当单元格达到某个值时,您不能声明要启动的宏。
但是:您可以在任何单元格发生更改时启动宏,它的工作方式如下:

enter image description here

这都是什么意思?

在VBA项目编辑器(左窗格)中,您需要选择工作表,在源代码编辑器中,您需要进入“工作表”和“更改”,像这样,您有一个在每次您的工作表中发生了一些价值变化。

代码本身如下所示:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Row = 1 And Target.Column = 9 And Target.Value = True Then
    CommandButton_Click (...)
  End If
End Sub

这意味着将始终启动宏,但是您只希望在以下情况下发生某些事情:

Target.Row    = 1    (which correspond with cell "I1")
Target.Column = 9    (which corresponds with cell "I1")
Target.Value  = True (which corresponds with value `WAAR`, I assume here that `WAAR` is just 
                      the Dutch translation for the boolean `True` and not some string value)

答案 2 :(得分:0)

根据按钮的类型,您需要调用按钮连接的Sub或触发button_click事件过程。

假设您有一个“表单”按钮正在调用Sub测试:

Public Sub Test()
    MsgBox "Forms Button clicked"
End Sub

在您的Worksheet_Change()过程中,您的代码应如下所示:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Row = 1 And Target.Column = 9 And Target.Value = True Then
        Test
    End If
End Sub

如果您有一个ActiveX按钮,您的代码将如下所示:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Row = 1 And Target.Column = 9 And Target.Value = True Then
        Sheet1.CommandButton1.Value = True ' This triggers the click event
     End If
 End Sub