Excel 2010多单元格工作表更改触发器

时间:2014-12-23 02:37:33

标签: excel vba excel-vba

我有一个电子表格,我可以根据数据验证组合框选择多个选项。根据我选择的组合框中的值,然后我填充同一行中的各种其他单元格。所以我有类似的东西。

Combo Box | VBA Populated Cell | Another VBA Populated Cell | Another VBA Populated Cell
Combo Box | VBA Populated Cell | Another VBA Populated Cell | Another VBA Populated Cell
Combo Box | VBA Populated Cell | Another VBA Populated Cell | Another VBA Populated Cell

如果我从数据验证组合框中删除该值,它会将所有已更改的单元格还原为其#34;默认值"州。我想要做的是选择多行数据验证组合框,点击删除键并在选择中的每个项目上循环Excel。我遇到的问题是,当我这样做时,worksheet_change()函数似乎没有触发/触发。

在范围之内和之外,我试图捕获删除键,测试application.selection是否大于1,当我选择多行单元格时,我无法设法触发Worksheet_Change()函数并点击删除键。

这是Excel的限制还是我没有考虑/通过谷歌搜索找到的东西?

编辑:看看我是否可以更清楚一点:组合框来自数据验证工具(数据 - >数据验证)。它们不是可以嵌入到工作表中的ActiveX控件。我正在处理的文件......将其视为发票表单。带有组合框的第一列允许我从几种事务类型中进行选择。因此,让我们说借记或贷记继续发票形式的想法。如果一行是借记,我想用该特定值填充该行中的其他单元格,如果它是一个功劳,我想用不同的值填充这些单元格。

我现在要做的是能够选择一系列细胞。所以,让我说我有一个包含10行借记/贷记分录的表格。然后我意识到第5-10行来自另一张发票,所以我想选择单元格A5-A10,点击删除键并触发一些VBA代码,这些代码将遍历第5-10行并在B,C和B列中设置单元格D到我编程的默认值。所以我希望能够在我操作一系列单元格而不是单个单元格时触发Worksheet_Change。

1 个答案:

答案 0 :(得分:1)

如果更改或删除范围(“A1:A4”)中的任何单元格,则应激活以下代码。它将告诉您范围中有多少单元格已更新。这假设您正在使用基于您正在讨论的“数据验证组合框”列表的单元格下拉列表。 (意思是您使用了数据 - >数据验证根。)您的术语似乎有点不清楚,所以希望这就是您的意思。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1:A4")) Is Nothing Then
        Counter = 0
        For Each myCell In Target
            Counter = Counter + 1
        Next
        MsgBox (Counter & " cells have been updated.")
    End If
End Sub

MSDN Worksheet Change Event
Application.Intersect Method Excel