こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel VBAグラフチャート名で指定するには再

以前に質問しましたが解決していませんので再度質問します。

ActiveChartではなく、具体的なチャート名で
指定するにはどのように記述すればよいでしょうか。

具体的には、以下のtest()のコードの最後の1行
ActiveChart.SetSourceData Source:=Range("Sheet1!A1:B2"), PlotBy:=xlRows
をActiveChartを使わずに記述するには、
どのように記述すればよいでしょうか。
回答例のように具体的なコードを教えてください。

よろしくお願いします。(Windows10,Excel2016)

---------------------------------------
Sub test()
 ThisWorkbook.Worksheets("Sheet1").Select
 ThisWorkbook.Worksheets("Sheet1").Range("A10").Select
 ThisWorkbook.Worksheets("Sheet1").Shapes.AddChart2(297, xlBarStacked100).Select
 ActiveChart.SetSourceData Source:=Range("Sheet1!A1:B2"), PlotBy:=xlRows
End Sub
---------------------------------------
(注1)test()を実行する前にSheet1シートのセルA1,A2,B1,B2にA,B,75,25の値を入力してから実行してください。

(回答例)
---------------------------------------
Sub test()
 Dim chart_name As String
 ThisWorkbook.Worksheets("Sheet1").Select
 ThisWorkbook.Worksheets("Sheet1").Range("A10").Select
 ThisWorkbook.Worksheets("Sheet1").Shapes.AddChart2(297, xlBarStacked100).Select
 chart_name = ActiveChart.Name
 chart_name = Trim(Right(chart_name, Len(chart_name) - Len(ActiveSheet.Name)))
 ThisWorkbook.Worksheets("Sheet1").ChartObjects(chart_name).SetSourceData Source:=Range("Sheet1!A1:B2"), PlotBy:=xlRows
End Sub
---------------------------------------
(注2)ただし、このコードではエラーになります。
(注3)回答例のようにチャート名を取得するためにActiveChartを使用するのは可です。

投稿日時 - 2019-05-06 09:58:18

QNo.9614053

困ってます

質問者が選んだベストアンサー

一例です。
Sub test01()
Dim myCh As Object
With ThisWorkbook.Worksheets("Sheet1")
Set myCh = .Shapes.AddChart2(297, xlBarStacked100)
myCh.Chart.SetSourceData Source:=.Range("Sheet1!A1:B2"), PlotBy:=xlRows
End With
MsgBox myCh.Name
End Sub

投稿日時 - 2019-05-06 14:17:50

お礼

教えていただきましたコードで問題なく動作しました。
ありがとうございました。

投稿日時 - 2019-05-06 14:44:52

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問