見習いエンジニアがゆく

見習いエンジニアの勉強帳 VBA・NWなどなどITの勉強用ブログです。のんびり、のんびり。

【VBAエキスパートの勉強】ExcelVBAベーシック ~5.VBAの構文:オブジェクト式 オブジェクト.メソッド 引数 := 値~

前回の続きでVBAの構文 オブジェクト式について学びます。

 

www.heilnervba.work

 

前回は2つあるオブジェクト式の内、『対象.状態 = 値』(オブジェクト.プロパティ = 値) について、勉強しました。

 

今回は『対象.命令』『対象.命令 オプション := 値』のオブジェクト式について、学びます。

 

 

オブジェクト式 『対象.命令』『対象.命令 オプション := 値』

前回の『オブジェクト.プロパティ = 値』では、対象のプロパティ(状態や様子)を設定、操作しました。

今回の『対象.命令』『対象.命令 オプション := 値』は対象に対しての命令。シートを追加するなどのアクションを起こさせます。

 

なお、この命令は『メソッド』と呼びます。

シートの追加・削除などのように、オブジェクトに対して、操作を起こさせる命令をVBAではメソッドと呼びます。

 

そして、メソッドの実行に指定するオプションを『引数(ひきすう)』と言います。

※引数の読みは、「ひきすう」です。 

 

実際にVBAのコードを書いて、動かしてみたいと思います。

 

対象.命令(オブジェクト.メソッド)のコード例

Sub sampleAdd()
 Worksheets.Add
 Worksheets(1).Delete
End Sub

 

Worksheets.Addでは、Worksheetsがオブジェクト、Addがメソッド。

Worksheets(1).Deleteでは、Worksheets(1)がオブジェクト、Deleteがメソッド。

 

Worksheets.Addで一番左側にワークシートを追加し、Worksheets(1).Deleteで一番左側のワークシートを削除します。

 

対象.命令 オプション := 値(オブジェクト.メソッド 引数 := 値)のコード例

次に引数を与える場合の例です。

引数によって、メソッドに対してより詳細な指示を与えることができます。

 

例えば、複数のワークシートがある場合に右端(最後尾)にワークシートを追加する場合は以下のようにコードを記述します。

Sub sample2()
 Worksheets.Add after:=Worksheets(Worksheets.Count)
End Sub

引数『after』にWorksheets(Worksheets(Worksheets.Count))を指定することで、常に最後尾にシートを追加します。

Worksheets(1)が左端のシートです。Worksheets.Count(プロパティ)でワークシートの数を取得して、Worksheets(Worksheets.Count)で最後尾のワークシートを意味します。

『after』ですので、最後尾のさらに後(左側)にシートを追加します。

 

 次は、引数を使ってアクティブセルを削除した際に左方向・上方向にシフトするという詳細な指示を与えた例です。

 

Sub sample3()
 ActiveCell.Delete
End Sub 

 引数無しの「オブジェクト.メソッド」の構文。セルを削除して、上方向にセルがシフトします。

 

Sub sample4()
 ActiveCell.Delete Shift:=xlToLeft
End Sub

引数『Shift』に「xlToLeft」を指定することで、アクティブセルの削除後左方向にセルがシフトします。

 

Sub sample5()
 ActiveCell.Delete Shift:=xlUp
End Sub

上方向にシフトさせるには、xlUpを指定します。

 

複数の引数を指定する場合

ひとつのメソッドで複数の引数を指定する場合は、引数を「,(カンマ」)」で区切って指定します。

オブジェクト.メソッド 引数1 := 値, 引数2 := 値, 引数3 := 値

 

引数名の省略

メソッドに引数を指定する場合、引数名を省略することが可能です。

 

Sub sample4()
 ActiveCell.Delete Shift:=xlToLeft
End Sub

 上記コードはしてのように引数名「Shift」を省略することができます。

Sub sample4()
 ActiveCell.Delete xlToLeft
End Sub

 

ただし、複数の引数がある場合は、わかりやすいように引数名を記載する方が良いです。

後からコードをみて可読性が高いこと、わかりやすいことが重要です。