[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『グラフシート上のグラフを変数に入れたい』(くろたろう)
下記について教えていただけないでしょうか。 ・最終的にやりたい事 → グラフの軸の最小値・最大値を変更したい ・シート構成 元データシート+複数のグラフシート ・躓いているところ → 関数に渡す為にグラフを変数に入れたいがエラーになる。
下記掲載コードは、質問用にだいぶ端折っています。 躓いている部分はコードの Set tgtchartObj = ActiveWorkbook.Charts(i).ChartObjects(1) Set chart1 = tgtchartObj.Chart
で、エラー 「実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです。」 と出ます。
データシート上のグラフは Set chartObj = Worksheets(1).ChartObjects(1) Set chart1 = chartObj.Chart といった書き方で入れられるようですが…
グラフシート上のグラフを変数に入れる場合 どういった記述になるでしょうか。
どうぞ、よろしくお願い致します。
Sub test()
Dim i As Long
Dim tgtchartObj As ChartObject
Dim chart1 As Chart
Dim tmpCnt As Long
Dim tmpAvg As Double
tmpCnt = 1
For i = 1 To ActiveWorkbook.Charts.Count
Set tgtchartObj = ActiveWorkbook.Charts(i).ChartObjects(1) Set chart1 = tgtchartObj.Chart
tmpAvg = myMINMAX(chart1, "Average", tmpCnt) '略
Next i
End Sub
Function myMINMAX(tgtchart As Chart, mytgt As String, tgtNum As Long) As Variant
'略
End Function
< 使用 Excel:Excel2013、使用 OS:Windows7 >
Sub test() Dim i As Long
For i = 1 To ActiveWorkbook.Charts.Count With ActiveWorkbook.Charts(i) .Axes(xlValue).MinimumScale = 100 .Axes(xlValue).MaximumScale = 1000 End With Next i End Sub (???) 2016/06/14(火) 14:22
マクロの自動生成機能が、なんでもかんでもSelectしまくるのに似ていて、要らない処理と思いますが。
または、どうしてもサブプロシジャにしたいならば、呼び方を以下のようにするとか。
Call myMINMAX(ActiveWorkbook.Charts(i), "Average", tmpCnt) (???) 2016/06/14(火) 14:39
???さん、ご返信ありがとうございます。
グラフの外れ値を外してのmin・maxを探す為に 同じ事を何回かまわすためにサブプロシジャ化しました。
全体の作業でグラフを対象にする事が何回か登場する為 変数に入れてしまいたかったんですが 呼び方をご提示頂いた方式に変更する事にします。
ちなみになんですが、「グラフシートのグラフは直接変数に入れることは出来ない」 と考えて良いのですか? (くろたろう) 2016/06/14(火) 15:11
For i = 1 To ActiveWorkbook.Charts.Count Set chart1 = ActiveWorkbook.Charts(i) tmpAvg = myMINMAX(chart1, "Average", tmpCnt) Next i (???) 2016/06/14(火) 17:23
For i = 1 To ActiveSheet.ChartObjects.Count Set tgtchartObj = ActiveSheet.ChartObjects(i) Set chart1 = tgtchartObj.Chart tmpAvg = myMINMAX(chart1, "Average", tmpCnt) Next i (???) 2016/06/14(火) 17:40
???さん、ありがとうございます。
どうやらそもそもの勘違いで、 ブック - グラフシート - グラフ という構造だと思っていたんですが、そこが(も?)違ったわけですね。
「ChartObject オブジェクトに含まれている埋め込みグラフか、
独立したグラフシートのどちらかのグラフです。」
https://msdn.microsoft.com/ja-jp/library/office/ff194426.aspx
略した部分で何度も使うため 変数に入れられて可読性があがります。 ありがとうございました。 (くろたろう) 2016/06/14(火) 17:53
Sub test() Dim cht As Chart
For Each cht In ActiveWorkbook.Charts MsgBox cht.Name '略 Next
End Sub
(マナ) 2016/06/14(火) 20:08
マナさん お返事が遅れすみません。ありがとうございます!
ワークシートのループと同じようにチャートでも扱えるんですね。
別の業務をやっつけ次第 グラフシート・ワークシート上のグラフの扱い等を確認したいと思います!
(くろたろう) 2016/06/16(木) 10:50
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.