VBAの基本文法をつかむ(プロシージャ/ステートメント/オブジェクト/メソッド/プロパティ)

基礎から始めるVBAVBA

シリーズ前回の記事でVBAを書くための場所「標準モジュール」を表示させることができました。

前回記事はこちら

今回は、簡単なプロシージャを作ってVBAの基本構文を学んでいきましょう。

タナイ
タナイ

具体的には、以下の項目を解説します。

今回の解説項目
  • プロシージャ
  • ステートメント
  • オブジェクト
  • プロパティ
  • メソッド

A1セルの内容を書き変えるプログラムを書いてみよう

では、前回解説した「標準モジュール」に以下のプログラムを入力してみてください。

Sub A1セル()
Range("A1").Value = 1
End Sub

入力したら、VBA上メニューの再生ボタン(▷)を押してください。

F5キーでもOKです
実行

ワークシートのA1セルに「1」と入力されていたら成功です!

実行結果

VBAプログラムの基本構造

入力したプログラムからVBAの基本構造を見てみましょう。

Subプロシージャ

VBAは「Subプロシージャ」と呼ばれる処理の固まりが集まってできています。

Sub プロシージャ名()
処理
End Sub

Subプロシージャは「Sub」で始まり、「End Sub」で終わります。中にプログラムしたい具体的な処理を書いていきます。

プロシージャ名は自由につけられます。日本語も使えるので、分かりやすいプロシージャ名をつけてください。

タナイ
タナイ

Subプロシージャ以外にもFunctionプロシージャやPropertyプロシージャがありますが、まずはSubプロシージャについて覚えていきましょう。

ステートメント

Subプロシージャに内包されている1つ1つの処理を「ステートメント」といいます。

例では、

Range("A1").Value = 1

の部分がステートメントです。

オブジェクトとプロパティ

ステートメントの内容を詳しく見てみましょう。

Range("A1").Value = 1

Rangeはセル範囲を表すオブジェクト(後述)です。Range()とし、()のなかにセルの名前を入れることで特定のセルを指定できます。

.Valueは「値」を表すプロパティ(後述)です。

つまり、上記のステートメントは
「A1セル」の「値」=「1」
という意味だったのです。

VBAではこのように、まず処理を行いたい「対象」(ここでは「A1のセル」)を書きます。そのあと「.」を入力し、対象の「どの部分」か(ここでは「セルの値」)を入力します。最後に指定する「内容」(ここでは「1」)を入力し「=」でつなぎます。

[処理を行いたい対象].[対象のどの部分か]=[内容]
Range("A1").Value = 1

ここで「オブジェクト」と「プロパティ」という用語を覚えましょう。

「命令を行いたい対象」を「オブジェクト
「対象の指定したい部分」を「プロパティ
と呼ぶ。

ステートメントの書き方は、

オブジェクト.プロパティ=プロパティの値

オブジェクトとメソッド

もう1つプロシージャを書いてみましょう。

Sub A1セル削除()
Range("A1").ClearContents
End Sub

このプロシージャを標準モジュールに入力し、実行します。

今度はA1セルの値が消えたはずです。

.ClearContentsは「セルの値を消す」という意味です。

先ほどまでの知識だと.ClearContentsはプロパティに見えますが、実は違います。.ClearContentsメソッドと呼ばれます。

プロパティは「セルの値」「セルのフォント」のように名詞的なのに対し、メソッドは「行を挿入する」「値を消す」など動詞的なものだと押さえておくと理解しやすいでしょう。

メソッドの使用方法

「オブジェクトに対して実行したい命令」=「メソッド

オブジェクト.メソッド

VBAは基本的に「オブジェクト」に対し、何らかの「プロパティ」もしくは「メソッド」を指定するという形をとっていきます。

タナイ
タナイ

メソッドにはオプションを付けられるケースもあります。

例えば、「ワークブック.閉じる」というときに、保存しないで閉じて欲しい場合はワークブック.閉じる 保存しないというように引数(オプション指定)を付けて記述します。

VBAの基本構造をおさらい

ここまでの内容をまとめます。

VBAの基本構造

モジュールプロシージャステートメント

という階層構造になっている。

基本となるステートメントの構造
オブジェクト.プロパティ=値
オブジェクト.メソッド

ステートメントについての補足

実は、ステートメントという概念は解釈によって含まれる範囲が変わってきます。

今回は、Subプロシージャの中身の各行をステートメントと呼んでいましたが、厳密にはSubもステートメントです。

このシリーズで紹介していく予定ですが、繰り返し処理場合分けなど、より高度な命令を実行するためにForやSelectなどのフロー制御を行うステートメントなどもあります。

タナイ
タナイ

ステートメントにもいろいろな種類がありますが、初心者のうちは厳密な分類を覚えるより、個々の使い方のいくつかをまず覚えてから分類を学んだ方がより理解しやすいと思います。

コメント

タイトルとURLをコピーしました