簡體   English   中英

Excel VBA代碼從單元格公式運行宏

[英]excel vba code to run a macro from a cell formula

我有一本工作簿,其中一個工作表充滿了數據,另一個工作表充滿了圖表。 我編寫了一些代碼,這些代碼可以根據用戶在“圖表”工作表的兩個單元格中輸入所需的值,自動同時同時更改每個圖表的圖表比例和單位。 他們需要輸入的值在數據表中,並且它們本身也是相當長的公式。 我想更改“圖表”工作表上的單元格以引用“數據表”上的值,以便在添加新數據且這些單元格發生更改時,圖表自動更新,即無需用戶手動進行操作。 我在這里還讀過其他一些有關使用公式的類似文章,並嘗試過修改代碼,但是它們都與我的情況有所不同,因此我什么也做不了。

下面是我當前使用的代碼,當手動輸入值時,該代碼可以正常工作。 這些值在圖表表的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

將您的代碼移到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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM