エクセルのVBAに関する質問です。

あるシートにある元となるチャート(グラフ)をシートごとコピーして、別シートにもっていき、その別シートに別途データをもっていき、それを適用してグラフを再描画したいのです。
そのときにコピーされたチャートはどう指定したらいいのでしょうか? グラフ 8 とかいうプロパティになって、数字の部分がコロコロかわってVBAで指定しずらいです。簡単に指定する方法があったら教えてください。チャートはシートに2つあって、シートごとコピーします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2007/08/06 08:45:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:Mook No.1

回答回数1314ベストアンサー獲得回数393

ポイント60pt

シートとチャートの左上のセル位置を指定してオブジェクトを取得するようにすれば、できないでしょうか。


下記に簡単な実装例を例示します。

Sub main()
    Dim objChart As ChartObject
    Set objChart = getChartOnRange(Worksheets("Sheet1"), range("E12"))
    If objChart Is Nothing Then
        MsgBox "該当するチャートはありません"
    Else
        MsgBox "チャート名は[" & objChart.Chart.Name & "]です"
    End If
End Sub

'-----------------------------------------------------------
' 左上位置をセルで指定してチャートのオブジェクトを取得する
'-----------------------------------------------------------
Function getChartOnRange(ws As Worksheet, rg As range) As ChartObject
'-----------------------------------------------------------
    Dim objCrt As ChartObject
    For Each objCrt In ws.ChartObjects
        If Not Intersect(rg, objCrt.TopLeftCell) Is Nothing Then
            Set getChartOnRange = objCrt
        Exit Function
        End If
    Next
    Set getChartOnRange = Nothing
End Function

http://makotowatana.ld.infoseek.co.jp/vba_graph.html


あるいはコピーするのではなく、VBA で都度チャートを生成するのは大変でしょうか。

  • id:taknt
    コピー直後、アクティブになると想定し、アクティブチャートの名前を取得すればいいと思うけど、やり方は 知らない。

    というか 回答拒否だから 回答できない。
  • id:isogaya
    回答拒否結構ひっかかりますね。ゆるくしてあるのですが、

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません