プロが教える店舗&オフィスのセキュリティ対策術

マクロの自動記録でセルを範囲指定しグラフを作成したので、VisualBasicEditorで開くと、実行するセル範囲が固定されています。範囲を固定しないでマクロを実行したときに次に選択されている範囲に対して実行できるようにする方法を教えてください。VBA初心者になります。どうぞよろしくお願いいたします。

A 回答 (1件)

質問の意味を捉えていればいいんですが・・・チョッと不安です。



Sheet1のA1:B10で、A列を横軸、B列を縦軸、1行目を項目名として棒グラフの作成を記録しました。
グラフ自体は単なる例です。

'マクロの記録
Sub Macro1()
  Charts.Add
  ActiveChart.ChartType = xlColumnClustered
  ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B10"), PlotBy:=xlColumns
  ActiveChart.SeriesCollection(1).Delete
  ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
  With ActiveChart
    .HasTitle = True
    .ChartTitle.Characters.Text = "Y"
    .Axes(xlCategory, xlPrimary).HasTitle = False
    .Axes(xlValue, xlPrimary).HasTitle = False
  End With
End Sub


次のように変更してみました。
グラフを書く範囲を選択してこのマクロを実行します。
例えば、Sheet1のA1:B5にするとこの範囲でグラフを書きます。

'選択範囲のグラフを作成するよう変更
Sub chgMacro1()
  Dim grpAdr As String     '<追加>選択範囲のアドレス
  grpAdr = Selection.Address  '<追加>Selectionが選択したセル範囲になる

  Charts.Add
  ActiveChart.ChartType = xlColumnClustered
  '<次の行を変更>(Rangeに座標を代入)
  ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(grpAdr), PlotBy:=xlColumns
  ActiveChart.SeriesCollection(1).Delete
  ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
  With ActiveChart
    .HasTitle = True
    .ChartTitle.Characters.Text = "Y"
    .Axes(xlCategory, xlPrimary).HasTitle = False
    .Axes(xlValue, xlPrimary).HasTitle = False
  End With
End Sub
    • good
    • 0
この回答へのお礼

nishi6さん、ありがとうございました!
まさに希望していた回答そのものでした。
<追加>部分の記述と、SetSourceData Source:=Sheets("Sheet1").Range
の後の(grpAdr)を書き変えて成功しました。
本当にありがとうございました。

お礼日時:2002/04/03 14:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!