- ベストアンサー
Excel2000:マクロのセル範囲の変更方法について
マクロの自動記録でセルを範囲指定しグラフを作成したので、VisualBasicEditorで開くと、実行するセル範囲が固定されています。範囲を固定しないでマクロを実行したときに次に選択されている範囲に対して実行できるようにする方法を教えてください。VBA初心者になります。どうぞよろしくお願いいたします。
- みんなの回答 (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
お礼
nishi6さん、ありがとうございました! まさに希望していた回答そのものでした。 <追加>部分の記述と、SetSourceData Source:=Sheets("Sheet1").Range の後の(grpAdr)を書き変えて成功しました。 本当にありがとうございました。