• ベストアンサー

Excel2000:マクロのセル範囲の変更方法について

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

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.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

helphelphelp
質問者

お礼

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