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

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/07/30 08:41:51
  • 終了:2007/08/06 08:45:03

回答(1件)

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912007/07/30 10:18:09

ポイント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
    回答拒否結構ひっかかりますね。ゆるくしてあるのですが、

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません