Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


69512 / 76732 ←次へ | 前へ→

【11738】Re:グラフの元データ範囲の取得
お礼  Excel大好きちゃん  - 04/3/15(月) 17:23 -

引用なし
パスワード
   ▼ichinose さん:

ありがとうございます。
今、頂いたコードを実行してみました。
普通の埋め込みグラフだと、OKでしたが、
データ範囲が複雑な場合や外部参照の場合がNGでした。
でも、これは仕方ないですよね。
どうも、ありがとうございました。 (^^♪


>こんばんは。
>
>>再びのレス、ありがとうございます。
>>コードを差し替えて実行してみたのですが、
>>エラーは出なくなりましたけど、何も表示されません。
>>debug.print
>>のところがミソなのでしょうか。わたしが素人なもので。。。
>>エーーーン
>あー、そうですよね、「debug.print」なんて私も勉強し始めてかなり経ってから
>使い出したんだっけ!!
>
>ちなみに
>VBE(Visual Basic Editor)を開いて(これはコードを実行させておられるのでOKですよね)、Ctrl+Gで表示されるのが「イミディエイトウインドウ」です。
>ここに、
>>>      debug.print srs.formula & "---" & r_add
>の内容が表示されるんです。
>コードの途中結果等が正しいか否かをチェックするときには、便利ですよ!!
>
>
>>そこで、最初に頂いたコードで、エラーが出るところを
>>コメントに変更して実行してみましたら、
>>うまく「元データを取得できました。」(~_~)
>なるほど・・・。
>これは、データ範囲の領域の数がひとつのグラフですよね!!
>例えば、アクティブシートのA列1行目から
>
>     A    B    C     D
>1    x    y        z
>2    1    20        20
>3    2    40        40
>4    3    80        80
>5    4    160        160
>6    5    320        320
>7    6    640        640
>8    7    1280        1280
>9    8    2560        2560
>10    9    5120        5120
>
>上記のセルA1からB10、さらにD1からD10をデータ範囲としてグラフ作成した場合も
>何とかできないかなあ と思い、
>
>>  Set rng = Union(rng, Range(r_add))
>
>というコードを記述したんですが・・・。
>
>取りあえず、気になった箇所を修正しました。
>でも、色々試してみるとやっぱり完全には取得は難しいですが・・。
>
>'============================================================
>Sub test()
>  Dim cht As Chart
>  Dim srs As Series
>  Dim rng As Range
>  Dim r_add As String
>  Set cht = ActiveSheet.ChartObjects(1).Chart
>  Set rng = Nothing
>  For Each srs In cht.SeriesCollection
>    r_add = edit_addr(srs.Formula, srs.PlotOrder)
>    If r_add <> "" Then
>      If rng Is Nothing Then
>       Set rng = Range(r_add)
>      Else
>       Set rng = Union(rng, Range(r_add))
>       End If
>      End If
>    Next
>  If Not rng Is Nothing Then
>    MsgBox rng.Address(, , , True)
>    End If
>End Sub
>'=================================================================
>Function edit_addr(add, podr As Long) As String
>  Dim ans()
>  wk = Split(Replace$(Replace$(add, "=SERIES(", ""), "," & podr & ")", ""), ",")
>  jdx = 1
>  For idx = LBound(wk) To UBound(wk)
>   If TypeName(Application.Evaluate(wk(idx))) = "Range" Then
>    ReDim Preserve ans(1 To jdx)
>    ans(jdx) = wk(idx)
>    jdx = jdx + 1
>    End If
>   Next
>  If jdx > 1 Then
>   edit_addr = Join(ans(), ",")
>  Else
>   edit_addr = ""
>   End If
>End Function
>
>もし、ご覧になられていたら再度、確認してみて下さい。
>
>このご質問で色々と確認する事ができました。
3 hits

【11584】グラフの元データ範囲の取得 Excel大好きちゃん 04/3/11(木) 18:51 質問
【11589】Re:グラフの元データ範囲の取得 ichinose 04/3/12(金) 8:40 発言
【11591】Re:グラフの元データ範囲の取得 Excel大好きちゃん 04/3/12(金) 9:25 お礼
【11594】Re:グラフの元データ範囲の取得 ichinose 04/3/12(金) 9:54 発言
【11597】Re:グラフの元データ範囲の取得 Excel大好きちゃん 04/3/12(金) 10:07 お礼
【11643】Re:グラフの元データ範囲の取得 ichinose 04/3/12(金) 22:40 発言
【11738】Re:グラフの元データ範囲の取得 Excel大好きちゃん 04/3/15(月) 17:23 お礼
【11644】Re:グラフの元データ範囲の取得 Kein 04/3/13(土) 0:01 回答
【11692】Re:グラフの元データ範囲の取得 ichinose 04/3/14(日) 21:41 発言
【11708】Re:グラフの元データ範囲の取得 Excel大好きちゃん 04/3/15(月) 9:46 発言
【11746】Re:グラフの元データ範囲の取得 ichinose 04/3/15(月) 18:36 発言
【11757】Re:グラフの元データ範囲の取得 ichinose 04/3/15(月) 21:57 発言
【11758】Re:グラフの元データ範囲の取得 更に訂正 ichinose 04/3/15(月) 22:22 発言
【12018】気づかなくて、お礼が遅くなりました。(^^♪ Excel大好きちゃん 04/3/22(月) 12:11 お礼
【11739】Re:グラフの元データ範囲の取得 Excel大好きちゃん 04/3/15(月) 17:26 お礼

69512 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free