|
▼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
>
>もし、ご覧になられていたら再度、確認してみて下さい。
>
>このご質問で色々と確認する事ができました。
|
|