excel vba代码从单元格公式运行宏

时间:2015-12-14 17:39:19

标签: excel vba excel-vba charts

我有一个工作簿,其中包含一个充满数据的工作表和另一个充满图表的工作表。我编写了一些代码,可以根据用户在图表工作表的两个单元格中输入所需的值,同时自动更改每个图表的图表比例和单位。他们需要输入的值在数据表中,并且本身是相当冗长的公式。我想更改图表工作表上的单元格以引用数据表上的值,以便在添加新数据并且这些单元格发生更改时图表会自动更新,即用户无需手动执行此操作。我在这里阅读了一些关于使用公式的其他类似帖子并尝试调整代码但是它们与我的情况有点不同而且我还没有能够得到任何工作。

下面是我正在使用的代码,当手动输入值时,该代码可以正常工作。这些值在图表工作表的D6和D7中,我希望他们在数据表中引用G4和G5中的公式。请任何人都能告诉我我需要哪些额外代码以及它在哪里?!

非常感谢!

Private Sub Worksheet_Change(ByVal target As Range)

Dim Cht As ChartObject
For Each Cht In ActiveSheet.ChartObjects
    Cht.Chart.Axes(xlValue).MaximumScale = [D6]
    Cht.Chart.Axes(xlValue).MajorUnit = [D7]
Next Cht

End Sub

1 个答案:

答案 0 :(得分:0)

将您的代码移至Chart表单的Worksheet_Calculate事件。

D6D7的单元格值设置为等于数据表中的公式值后,每次重新计算数据表中的公式时,这都适用于您,从而导致D6D7重新计算。但是,使用此解决方案时,请记住,只要重新计算数据中的公式,此代码就会触发,这可能是不可取的。

注意 - 最好能够确定您的范围所指的工作表。这就是我在范围引用前添加Me.的原因。

Private Sub Worksheet_Calculate()

Dim Cht As ChartObject
For Each Cht In ActiveSheet.ChartObjects
    Cht.Chart.Axes(xlValue).MaximumScale = Me.Range("D6")
    Cht.Chart.Axes(xlValue).MajorUnit = Me.Range("D7")
Next Cht

End Sub