更改单元格时自动更新(计算)Excel工作表

时间:2016-02-02 10:53:09

标签: excel vba excel-vba target auto-update

我正在使用Excel 2010,我希望在更改单元格(Range("B7"))的值时自动更新(计算)Excel工作表(Range("B7")是一个下拉列表)。我试图使用交叉目标方法,如:

Private Sub Worksheet_Change(ByVal target As Range)
   If Not Intersect(target, Range("B7")) Is Nothing Then
     ActiveSheet.Calculate
   End If
End Sub

我有两个问题:

如果我把这个Private Sub放在任何模块下,这有关系吗?或者我应该在VBA中的Microsoft Excel对象菜单下的确切工作表中编写它?

第二个问题是我如何才能做到这一点?更改Range("B7")时,工作表不会自动更新(计算)。它仅在我保存Excel文件时更新。

2 个答案:

答案 0 :(得分:1)

该功能应该在B7所属的表格中,例如如果您正在更新的B7在" Sheet1"那么Worksheet_Change事件的代码也应该在Sheet1下。您可以右键单击工作表的选项卡,然后选择显示代码以在VBE中找到正确的位置。

Excel应该知道任何使用B7的单元格在更改时都需要重新计算,因此应该自动处理。

答案 1 :(得分:1)

如果您将代码置于工作表事件中,而不是 Modlue ,您的代码将有效。请找到下面的图片供您参考。

enter image description here

在VB窗口中选择相应的工作表并双击它,它将打开工作表事件窗口(代码窗口),您需要复制粘贴代码。现在尝试更改它应该工作的验证单元格:)..