【VBAエキスパートの勉強】ExcelVBAベーシック ~4.VBAの構文:オブジェクト式 オブジェクト.プロパティ = 値~
今回はVBAの基本構文について学びます。
VBAの基本構文
VBAの構文には、大きく分けて以下の3種類があります。
- オブジェクト式
- ステートメント
- 関数
2種類のオブジェクト式
オブジェクト式には、以下の2種類の構文があります。
- 対象.様子 = 値
- 対象.命令 オプション := 値
「 1.」の構文は操作対象の様子や状態を設定するための式です。
対象は「オブジェクト」、様子は「プロパティ」ですので、以下のように解釈することができます。
オブジェクト.プロパティ = 値
オブジェクト.プロパティ = 値の構文を使って、プロパティを設定・変更する
試しに以下のコードを実行してみましょう。
Sub sample()
Range("A1").Value = "田中"
Range("A1").Font.Color = RGB(0, 0, 255)
End Sub
行っている処理内容は以下の通りです。
『Rangeオブジェクト』のセルA1の『Valueプロパティ』に田中を設定。次に『Rangeオブジェクト』は以下の『Font』オブジェクトの『Colorプロパティ』に青色を設定。
つまりは、セルA1に田中と文字を設定。その文字を青文字に設定しました。
結果
A1セル(オブジェクト)に田中が青文字で設定されました。
もう一つ別の例を試してみましょう。
Sub sample2()
Worksheets(1).Name = "VBAシート1"
End Sub
今回の処理では、『Worksheets(1)オブジェクト』の『Nameプロパティ』をVBAシート1に設定しました。
※Worksheets(1)とは、一番左側のシートのことです。
読み取り専用プロパティ
すべてのプロパティがユーザーの自由に値を設定できるわけではありません。
プロパティの中には、何が設定されているかを調べることだけができるものもあります。
例えば「ActiveCell.Address」のように、現在アクティブなセルのアドレスは、今選ばれているセルのアドレスなので設定することはできません。
ActiveCell.Address = "A1" のように設定することはできません。
設定はできませんが、以下のように現在のアクティブセルのアドレスを調べることはできます。
Sub sample3()
MsgBox ActiveCell.Address
End Sub
※現在選んでいるセルのアドレスをメッセージボックスで表示するVBAです。
設定はできない、調べることはできるプロパティを『読み取り専用のプロパティ』と呼びます。
プロパティの値を調べる
「 読み取り専用プロパティ」がでてきましたので、いくつかプロパティの値を調べる簡単な例を書きたいと思います。
Sub sample4()
Dim strCell As String, strWs As String
Range("A1").Value = "田中"
strCell = Range("A1").Value
strWs = Worksheets(1).Name
Range("C1").Value = "セルA1の値は" + strCell + "です。"
Range("C2").Value = "このブックの一番左のワークシート名は" + strWs + "です。"
End Sub
『Value』プロパティは省略することも可能です!