Excel VBA質問箱 IV

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

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


69607 / 76732 ←次へ | 前へ→

【11643】Re:グラフの元データ範囲の取得
発言  ichinose  - 04/3/12(金) 22:40 -

引用なし
パスワード
   ▼Excel大好きちゃん さん:
こんばんは。

>再びのレス、ありがとうございます。
>コードを差し替えて実行してみたのですが、
>エラーは出なくなりましたけど、何も表示されません。
>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

もし、ご覧になられていたら再度、確認してみて下さい。

このご質問で色々と確認する事ができました。
2 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 お礼

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