• ベストアンサー

VBA 選択しているデータでグラフを書きたい

自分で選択している範囲を使ってグラフを書きたいのですが、 以下のコードに何と書けばよいのでしょうか? Selection.Addressと書くとエラーが出ます。 ActiveChart.SetSourceData Source:=”選択しているデータを使用する”

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

  • ベストアンサー
回答No.2

お邪魔します。 アクティブなワークシート上にて、 グラフが選択されていて、 直前まで選択していたセル範囲を アクティブなグラフの[データの範囲]に指定したい ということでしたら、簡単に   ActiveChart.SetSourceData Source:=ActiveWindow.RangeSelection のような感じのことを意図されているのではないでしょうか。  グラフを選択中  セル範囲を選択中 どちらでも処理できるようにするには、以下のような感じでしょうか? ' ' /// ' ' < Selection の種類が >   Select Case TypeName(Selection) ' ' < Range であれば >   Case "Range"   ' ' グラフの名前からChartを参照して、グラフの[データの範囲]にSelectionを指定     ActiveSheet.ChartObjects("グラフ 1").Chart.SetSourceData Source:=Selection ' ★グラフ名要指定 ' ' < ChartArea ... であれば >   Case "ChartArea" ' , "PlotArea", "Series", "Legend", "Axis", "Gridlines", "Point"   ' ' アクティブなグラフの[データの範囲]に、アクティブなウィンドウのRangeSelectionを指定     ActiveChart.SetSourceData Source:=ActiveWindow.RangeSelection   End Select ' ' /// > エラーが出ます。   「実行時エラー '13'    型が一致しません。」 なのか   「実行時エラー '91'    オブジェクト変数または Withブロック変数が設定されていません。」 なのか、 一応、両方の実行時エラーを回避する意図で書いてみました。 Selection は、  Range=セル範囲 だったり、  ChartArea  , PlotArea, Series, Legend, Axis, Gridlines, Point ... だったり、  その時にExcel上で選択しているオブジェクト という意味ですから、  ActiveChart がオブジェクトとして成立している時には、 グラフ配下のオブジェクトが選択されていることになりますから、 Selectionは、Rangeを指していない、ということになる、という点が問題点なのでは、と。 あまり得意なジャンルではないので、 お求めに対するこちらの理解が至っていないようでしたら御容赦を。

VitaminBB
質問者

お礼

回答ありがとうございました ActiveChart.SetSourceData Source:=ActiveWindow.RangeSelection これでうまくいきました。

その他の回答 (1)

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.1

ActiveChart.SetSourceData Source:=Selection で良いです。 Selection.Addressは、選択セルのセルアドレスを文字列で返します。 選択セルそのもの(Rangeオブジェクト)を返すには「Selection」だけの指定となります。 もし、Selection.Addressを使用するなら以下の表記になります。 ActiveChart.SetSourceData Source:=Range(Selection.Address) Range(引数)関数は 引数(文字列)で指定されたセルアドレスをオブジェクトとして返す関数です。

VitaminBB
質問者

お礼

回答ありがとうございました ActiveChart.SetSourceData Source:=ActiveWindow.RangeSelection これでうまくいきました。

関連するQ&A