2015-12-14 202 views
1

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

下面是我目前使用的代码,当手动输入值时工作正常。这些值位于图表工作表的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

如果在数据表进人发生的所有数据,你可以尽量减少海图更新通过将更新代码在图表工作表的'Activate'事件。这样更新只在需要时运行(即当有人查看图表时) –

+0

万岁! Activate事件完美运作。我猜它最终会变得简单。非常感谢@TimWilliams的帮助! –

回答

0

移动你的代码到Worksheet_Calculate事件您Chart板材。

一旦设定的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 
+1

做downvoter护理评论为什么downvote? –

+0

我也尝试过这种方法@ScottHoltzman,但由于某种原因它仍然无法工作。但是将代码放入Activate事件并没有诀窍。不管怎样,谢谢你! (顺便说一下,不是我低估了你的!) –