かっきぃーの雑記帳

おもしろき こともなき世に おもしろく

記録したマクロに手を加える[とりあえず使えるエクセルVBAマクロ超入門]

Lesson1 マクロの作り方 基礎の基礎

では、前記事「記録したマクロ(VBAプログラム)の表示方法」で確認したマクロをベースに手を加えてみましょう。

(1)セルへの数値入力の方法を変更する

マクロの自動作成ではセルへの数値入力は次のように表されていました。

Range("B3").Select
ActiveCell.FormulaR1C1 = "2"
(3)

簡略化すると次のようにかくことも可能です。

Range("B3")=2  

さらに、

Range("B3")=Range("B2")+1  

などの数式で書き表す方法も可能です。
(3)の部分を次のように変更してみましょう。

Range("B2") = 1
Range("B3") = Range("B2")+1 'B2のセルの数値に"1"を加える
Range("B4") = Range("B2")+2
Range("C2") = Range("B2")^2 'B2のセルの数値を2乗する
Range("C3") = Range("B3")^2
Range("C4") = Range("B4")^2
(3)

 

スポンサーリンク

 

 

(2)グラフのx軸の範囲を変更する

 グラフのx軸の範囲を変更したいが、やり方がよく分からない。
そんなときは、マクロの自動作成機能を応用します。

[手順1]

マクロを記録します。([開発]タブ>[コード]>マクロの記録)

[手順2]

「マクロ名」「マクロの保存先」「説明」などを記入し「OK」ボタンを押します。

[手順3]

次の操作をマクロ化します。
(1)グラフのx軸を右クリックして、「軸の書式設定」を選択
(2)「軸のオプション」の「最小値」と「最大値」を「固定」に変更し、数値ボックスに数値を入力。

 ◆今回はmin:1、max:3とした

(3)「OK」ボタンをクリック

f:id:k_create:20180924020519p:plain

[手順4]

マクロの記録を停止します。

[手順5]

Visual Basic Editorを開き、マクロの内容を確認します。
([開発]タブ>[コード]>Visual Basic
Macro1の後に下記のMacro2が作成されました。

Sub Macro2()
'
' Macro2 Macro
'

'
 
ActiveSheet.ChartObjects("グラフ 1").Activate
ActiveChart.Axes(xlCategory).Select
(1)
ActiveSheet.ChartObjects("グラフ 1").Activate
ActiveChart.Axes(xlCategory).MinimumScale = 0
ActiveChart.Axes(xlCategory).MaximumScale = 3.5
ActiveChart.Axes(xlCategory).MinimumScale = 1
ActiveChart.Axes(xlCategory).MaximumScale = 3
(2)
End Sub  

まず(1)の部分の1行目は「ActiveSheet【現在のシートの】.ChartObjects("グラフ 1")【グラフ1というグラフを】.Activate【選択する】」という意味であり、 2行目は「ActiveChart【選択されているグラフの】.Axes(xlCategory)【x軸を】.Select【選択する】」という意味になることが分かります。

つぎの(2)で特徴的なのは「ActiveChart【選択されているグラフの】.Axes(xlCategory)【x軸の】 .MinimumScale = 0【最小値を0にする】」という形式です。最大値は「.MaximumScale」ですね。

ただ、「ActiveChart.Axes(xlCategory).MinimumScale = 0」のあとに「ActiveChart.Axes(xlCategory).MinimumScale = 1」となるなど、同じ作業が繰り返し行われています。 これはマクロを記録する際に、まず軸を「自動」から「固定」に変更し、その次に数値を入れ替えた作業を忠実に反映しているものと思われます。

ですので、初めの一文は不要(ムダな部分)となります。また、(2)の1行目も(1)の1行目と重複するため不要です。そうなると、必要な部分は次の通りとなります。

ActiveSheet.ChartObjects("グラフ 1").Activate
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).MinimumScale = 1
ActiveChart.Axes(xlCategory).MaximumScale = 3
 

そこで、この部分をMacro1にコピー&ペーストをします。場所はグラフに関する設定をするwith文の後です。すると、次のようになります。

下記コード中、(6)段落の1行目は、すでに新規に作成したグラフが選択されているので不要です。また、新規にグラフを作るごとにグラフの名称が変わりますので、そのままにしておくとエラーとなるので、ご注意!

Sub Macro1()  
'
' Macro1 Macro
'
'

'
 
Range("B2") = 1
Range("B3") = Range("B2")+1 'B2のセルの数値に"1"を加える
Range("B4") = Range("B2")+2
Range("C2") = Range("B2")^2 'B2のセルの数値を2乗する
Range("C3") = Range("B3")^2
Range("C4") = Range("B4")^2
 
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "='Sheet1'!$B$2:$B$4"
ActiveChart.SeriesCollection(1).Values = "='Sheet1'!$C$2:$C$4"
(5)
'ActiveSheet.ChartObjects("グラフ 1").Activate '←削除する必要あり。
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).MinimumScale = 1
ActiveChart.Axes(xlCategory).MaximumScale = 3
(6)
End Sub  

 このように、

  • 構文を覚えていなくても、マクロの自動作成機能の応用でカスタマイズができる。
  • マクロの自動作成機能では、不必要な操作も記録される場合がある。

ということを知っていれば、知識が少なくてもさまざまなマクロをスマートに作成できます。

マクロを実行するボタンを作る方法

          6        10  11

とりあえず使えるエクセルVBAマクロ超入門(もくじ)

 

スポンサーリンク

 


#エクセル #Excel #マクロ #VBA