【问题标题】:(VBA) Putting ComboBox + macroevent on cell change(VBA) 将 ComboBox + 宏事件放在单元格更改上
【发布时间】:2014-03-31 03:49:24
【问题描述】:

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

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 中的值时它起作用,但由于组合框的更改而不起作用)。

【问题讨论】:

    标签: vba events combobox cell


    【解决方案1】:

    只需使用OnAction 属性将宏分配给控件。每次对组合框的值进行更改后,它将运行。

    【讨论】:

    • 谢谢!但是我仍然想知道为什么它不将链接单元格中的更改视为执行宏的冲动。
    • 我不认为你会得到一个明确的答案。事件发生时触发事件处理程序。显然,Excel 开发人员决定在通过组合框更改更新单元格值时不会引发此类事件。我认为这是一个可行的原因是你有Combobox_Change 事件处理程序来处理这个问题。如果您可以同时使用两者,那么您可能会“复制”一个事件,我无法想象这样的结果是可取的。
    猜你喜欢
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    相关资源
    最近更新 更多