2015-12-14 131 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事件並沒有訣竅。不管怎樣,謝謝你! (順便說一下,不是我低估了你的!) –