0

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

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

不一定要这样,如果你知道其他的也很好。

在此处输入图像描述

4

3 回答 3

1

您可以使用Worksheet_Change事件来触发宏。所以,你必须制作 sub 并从Worksheet_Change事件中调用它。子将与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
于 2020-09-03T08:53:25.663 回答
1

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

但是,我想“按钮”背后的代码是这样的:

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

你可以做的是创建一个启动这个过程的宏,但是你有问题,什么时候有人会启动那个宏?在那里,您自己(或多或少)提供了答案:当单元格“I1”获得某个值时。然而,这是不可能的:当单元格获得某个值时,您不能声明要启动的宏。
但是:您可以在任何单元格更改时启动宏,它的工作原理如下:

在此处输入图像描述

这是什么意思呢?

在 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)
于 2020-09-03T08:57:26.670 回答
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
于 2020-09-03T10:22:31.343 回答