Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(VBA)放置组合框+;细胞变化的宏观事件_Vba_Events_Combobox_Cell - Fatal编程技术网

(VBA)放置组合框+;细胞变化的宏观事件

(VBA)放置组合框+;细胞变化的宏观事件,vba,events,combobox,cell,Vba,Events,Combobox,Cell,我试图在活动工作表(但不是activeX combobox)中放置一个组合框,选择要填充的列表并链接单元格。这是一项简单的任务,例如: Sub make_combobox() ActiveSheet.DropDowns.Add(69.75, 1.5, 79.5, 40.5).Select Selection.Name = "combo" ActiveSheet.Shapes("combo").Select With Selection .ListFillRange = "$A$1:$A

我试图在活动工作表(但不是activeX combobox)中放置一个组合框,选择要填充的列表并链接单元格。这是一项简单的任务,例如:

Sub make_combobox()

ActiveSheet.DropDowns.Add(69.75, 1.5, 79.5, 40.5).Select
Selection.Name = "combo"
ActiveSheet.Shapes("combo").Select
With Selection
    .ListFillRange = "$A$1:$A$3"
    .LinkedCell = "$D$1"
    .DropDownLines = 8
    .Display3DShading = False
End With

End Sub
我尝试将宏放入包含此组合框的工作表中,每当根据组合框中的所选选项更改所选链接单元格时,该工作表将显示msgbox。我在工作表部分写下了这句话:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("D1")) Is Nothing Then
    MsgBox "It works!"
End If

End Sub

不幸的是,它不起作用(实际上,当我手动更改D1中的值时,它起作用,但由于combobox中的更改而不起作用)。

只需使用
OnAction
属性为控件指定宏即可。它将在对组合框的值进行每次更改后运行

谢谢大家!!但是我仍然想知道为什么它不把链接单元格中的更改视为执行宏的冲动。我认为你不会得到一个明确的答案。事件处理程序在事件发生时被激发。显然,Excel开发人员决定在通过组合框更改更新单元格值时不会引发此类事件。我认为这样做是可行的,原因是您有
Combobox\u Change
事件处理程序来处理这个问题。如果您可以同时使用这两种方法,那么您可能会“复制”一个事件,我无法想象这样的结果是令人满意的。