Board logo

標題: [發問] 請問如何隨表內數值變動時,自動變更圖表座標刻度尺值 [打印本頁]

作者: peter460191    時間: 2014-6-9 13:58     標題: 請問如何隨表內數值變動時,自動變更圖表座標刻度尺值

請問各為專家:
(圖2)裡的座標刻度(圖3),如何隨計表內(圖1)數值變動時,自動變更圖表座標刻度尺值
          最小值:參照(圖1)的(B114儲存格),位置會變動
         最大值:參照(圖1)的(B98儲存格),位置會變動
         主要刻度間距:參照(圖1)的(I4儲存格),位置 不會變動
         類別X軸相交於:參照(圖1)的(B108儲存格),位置不會變動

另附上檔案請專家幫忙,謝謝您!



[attach]18457[/attach][attach]18458[/attach][attach]18459[/attach][attach]18460[/attach]
作者: GBKEE    時間: 2014-6-12 09:22

本帖最後由 GBKEE 於 2014-6-12 09:25 編輯

回復 1# peter460191
試試看
  1. Option Explicit
  2. ' Sheet6("工作價位走勢圖")工作表模組的程式碼
  3. Private Sub Worksheet_Calculate()   '工作表中儲存格公式值有變動的預設事件
  4.     自動變更圖表座標刻度尺的值
  5. End Sub
  6. Private Sub Worksheet_Change(ByVal Target As Range) '工作表中儲存格值有變動的預設事件
  7.     自動變更圖表座標刻度尺的值
  8. End Sub
  9. Private Sub 自動變更圖表座標刻度尺的值()
  10.    If [count(Sales)] > 0 Then
  11.         With ChartObjects(1).Chart.Axes(xlValue)
  12.             .MinimumScale = [min(Sales)]  '數值列的最小值
  13.             .MaximumScale = [max(Sales)]  '數值列的最大值
  14.             ' ** [ 活頁簿的函數公式 ] *** 不可用變數
  15.             .MinorUnit = 1
  16.             .MajorUnit = 1
  17.             .CrossesAt = ([min(Sales)] + [max(Sales)]) / 2
  18.             'CrossesAt 傳回或設定數值座標軸上與類別座標軸的交點。僅套用至數值座標軸
  19.         End With
  20.     End If
  21. End Sub
複製代碼

作者: peter460191    時間: 2014-6-13 12:54

回復 2# GBKEE


     非常謝謝GBKEE超級版大
     我趕快來試試看。
     謝謝您 !
作者: peter460191    時間: 2014-6-16 12:38

回復 2# GBKEE


    請問GBKEE版大

不好意思!試了好多次,都沒反應,想請教GBKEE版大要如何使用?
作者: GBKEE    時間: 2014-6-16 13:10

回復 4# peter460191
你工作表上有名稱定義 Sales 這範圍內從上而下的給資料
作者: peter460191    時間: 2014-6-17 13:07

回復 5# GBKEE


    GBKEE版大,不好意思!
   初學VBA,不太了解您的意思,方便再細部指導嗎?
    拍勢啦!謝謝您!
作者: GBKEE    時間: 2014-6-17 13:18

本帖最後由 GBKEE 於 2014-6-17 13:22 編輯

回復 6# peter460191

   
你工作表上有名稱定義 Sales 這範圍內從上而下的給資料

到工作表指令 插入-> 名稱->定義
看看範圍在哪裡


[attach]18511[/attach]
作者: peter460191    時間: 2014-6-17 14:15

回復 7# GBKEE


    GBKEE版大,不好意思!我懂您的意思了,但是我想要的值是另一張工作表的四個值(其中2個固定,2個變動;若變動值不行,4個固定也可以),不知這樣程  
    式要如何寫?謝謝您了!

         (表2-價位走勢圖)裡的座標刻度,如何隨計表內(表1-計劃表(主檔))數值變動時,自動變更(表2-價位走勢圖)圖表座標刻度尺值
          最小值:參照(表1-計劃表(主檔))的(B114儲存格),位置會變動,
          最大值:參照(表1-計劃表(主檔))的(B98儲存格),位置會變動
          主要刻度間距:參照(表1-計劃表(主檔))的(I4儲存格),位置 不會變動
          類別X軸相交於:參照(表1-計劃表(主檔))的(B108儲存格),位置不會變動
作者: GBKEE    時間: 2014-6-18 06:05

回復 8# peter460191
2# 之前的  Sheet6("工作價位走勢圖")工作表模組程式碼要刪掉
是這樣嗎
  1. ' Sheet3("計劃表(主檔)")工作表模組的程式碼
  2. Private Sub Worksheet_Calculate()   '工作表中儲存格公式值有變動的預設事件
  3.     自動變更圖表座標刻度尺的值
  4. End Sub
  5. Private Sub Worksheet_Change(ByVal Target As Range) '工作表中儲存格值有變動的預設事件
  6.     自動變更圖表座標刻度尺的值
  7. End Sub
  8. Private Sub 自動變更圖表座標刻度尺的值()
  9.     With Sheets("價位走勢圖").ChartObjects(1).Chart.Axes(xlValue)
  10.         .MinimumScale = [min(B109:B116)]  '數值列的最小值 :位置會變動(取範圍內的最小值)
  11.         .MaximumScale = [max(B98:B107)]   '數值列的最大值 :位置會變動(取範圍內的最大值)
  12.         ' ** [ 活頁簿的函數公式 ] *** 不可用變數
  13.         '.MinorUnit = 1
  14.         .MajorUnit = [I4]    '位置會固定
  15.         .CrossesAt = [B108]  '位置會固定
  16.         'CrossesAt 傳回或設定數值座標軸上與類別座標軸的交點。僅套用至數值座標軸
  17.         End With
  18. End Sub
複製代碼

作者: peter460191    時間: 2014-6-19 10:03

回復 9# GBKEE


非常謝謝GBKEE超級版大
就是這樣的效果,您真是厲害
要好好來學學
謝謝您 !




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)