VBA技術解説
VBAの用語について:ステートメントとは

ExcelマクロVBAの問題点と解決策、VBAの技術的解説
最終更新日:2020-10-16

VBAの用語について:ステートメントとは


プログラミング言語には独特の用語があります。
用語の理解があやふやなままで解説を読んでも理解がずれてしまう事もあります。
VBAの用語は、プログラミング言語一般で使われている用語と同じ使い方も多いのですが、
中にはVBA独自の使い方をしている場合もあります。
ここでは、代表的な用語として、
キーワード、予約語、演算子、識別子、そしてステートメントについて説明します。


キーワード

VBAプログラミング言語の一部として認識される単語または記号。
たとえば、ステートメント関数名演算子などが全てキーワードになります。

予約語

VBAプログラミング言語において、
字句(単語)的には識別子としてのルールを満たしているにもかかわらず、識別子として使えない字句。
変数名として使ったときに赤字エラーになるものが予約語になります。
例えば、if、len、is等々

キーワードの多くが予約語になっていますが決して全てではありません。
もとより、ステートメントや関数と同じ名称は使うべきではありません。
Microsoftの公式リファレンスに一覧が見当たりませんが、ネットには一覧を掲載しているページもあるようです。

演算子

演算子は演算内容を表す記号で、VBAでは以下のように大別されています。

・算術演算子
+ - * / \ Mod ^
・比較演算子
= > < >= <= <> Is Like
・連結演算子
& +
・論理演算子
And Or Not Xor Eqv Imp

識別子

・変数名
・定数名
・引数名
・プロシージャ名
これらを総称して識別子と呼びます。

ステートメント

VBAのドキュメントでは、ステートメントという用語が二つの意味で使われています。
・一般的なステートメント。構文的に完全な単位で通常は1行に1ステートメント
・VBAに用意された命令。Subステートメント、Dimステートメント等
VBAの説明ではこれらは区別して使われず、どちらもステートメントとして使われています。
本サイトにおいても、特に区別せずに使用しています。

ステートメントという用語については、VBAでは使われ方が曖昧なところが多いので、
以下についても、概ねそのように使われているという事で承知してください。

一般的なステートメント
プログラムの構成単位で、手続きや命令、宣言などを「ステートメント」または「文」といいます。
1種類の処理、宣言、または定義を表す、構文的に完全な単位です。
通常は1行に1ステートメントですが、コロン(:) を使用することで1行に複数のステートメントを記述できます。
また、行連結文字 (_) を使用することにより、継続して複数行にできます。

For i = 1 To 10
  If i > 5 Then
    Cells(i, 1) = i
  End If
Next

上記VBAの1行1行がステートメントです。
つまりこれは5つのステートメントということになります。
このステートメントの数をステップ数とも言います。
少し大きいVBAであれば、数千ステップ以上が書かれていたりします。

コロン(:)を使ったマルチステートメントや、
行連結文字(_)を使い複数行になっているステートメントがあるので、単なる行数とは違います。

コメントについて
コメントもステートメントと言えるのですが、さすがに違和感を感じる人も多いだろうと思われます。
VBAの場合は、Remキーワードを使った場合はともかくとして、(')を使ったコメントの場合は別にしたほうが良いと思います。

VBAに用意された命令
VBAのドキュメントのタイトルには、
・Subステートメント
・Dimステートメント
・For...Nextステートメント
・If...Then...Elseステートメント
・・・
このように書かれています。
このことから、VBAではこれらの命令文を単独でステートメントとしばしば呼んでいます。
当サイトでも、「Forステートメントは・・・」のように記したりしています。

厳密な言い方をするなら、これらはキーワードです。
・Subキーワード
・Dimキーワード
・Forキーワード
・Ifキーワード
・・・
つまり、キーワードのうちの一部をステートメントと言う呼び方をしているという事です。
では、キーワードのうち、どれとどれをステートメントと呼んでいるかと言う事になりますが、
それは、通常1行1ステートメントの先頭に書くことができるキーワードを指しています。

For i = 1 To 10
  If i > 5 Then
    Cells(i, 1) = i
  End If
Next

上記VBAの、For,If,End,Nextこれらをステートメントと呼んでいるという事です。
では、3行目の、
「Cells(i, 1) = i」
これはどうなっているかという事が疑問になってきます。
これは実は、Letキーワードが省略されています。
つまり本来は、
Let Cells(i, 1) = i」
このように記述するべきもので、先頭のLetがステートメントになります。
同様に、
「Worksheets(1).Select」
とだけ記述されている場合はどうでしょうか。
これは、Callが省略されていて、
Call Worksheets(1).Select」
このように記述するべきものです。

Sub sample()
  Dim i As Long
  With Worksheets(1)
    Call .Select
    For i = 1 To 10
      Let Cells(i, 1) = i
    Next
  End With
End Sub

つまり、
一般的いうステートメント(通常1行1ステートメント)の先頭には、
特定のキーワードしか書くことが出来ず、
その特定キーワードをVBAでは○○ステートメントという呼び方をしばしばしているという事です。
したがって、このステートメントと呼ばれているものの数はそれほど多くはありません。
VBAのステートメント一覧
マクロVBAステートメントの一覧と解説です。基本ステートメント フロー制御ステートメント ファイル・フォルダ関連ステートメント フォーム・クラス関連ステートメント レジストリ関連ステートメント 太字はリンク付きは、詳細解説ページ、または、応用したVBAコードがあるページにリンクしています。

呼び方の注意点
ここでいうステートメントのほとんどは1キーワードですが、
For...Nextステートメント
If...Then...Elseステートメント
これらのように、そのステートメントを構成する分割できないキーワードはまとめて呼んでいるものもあります。
ただし、日本語で簡易的にIf文と言うように、Ifステートメントという言い方もされます。

VBA用語の最後に

VBAは歴史も古く、また極めて広く普及しているためなのかどうか、
こんな基本的な用語も定義がはっきりしない部分があったりします。
通常はそんなに意識する必要もありませんが、何か調べようとした時には役に立つ事もあるはずです。

例えば、
「with」で検索しても、さすがに目的のものは出てきませんが、
「withステートメント」で検索すれば、そのほとんどがVBAのWithが出てくるはずです。
そのくらいVBAのステートメントという呼び方が定着しているという事になります。
ただし検索に関しては、「vba with」のように「vba」を付けたほうが良い事は言うまでもありませんが。

このように、一般に定着している呼び方と言うのもありますので、一応は覚えておくと良いでしょう。



同じテーマ「マクロVBA技術解説」の記事

エクセルVBAでのシート指定方法
文字列結合&でコンパイルエラーになる理由
手動計算時の注意点と再計算方法
VBAの用語について:ステートメントとは
オブジェクト変数とは何か
VBAの小数以下の演算誤差について
スピルでVBAの何が変わったか
CharactersプロパティとCharactersオブジェクト
ユーザーに絶対に停止させたくない場合のVBA設定
印刷範囲の設定・印刷範囲のクリア
VBAの省略可能な記述について


新着記事NEW ・・・新着記事一覧を見る

シート関数のCOUNTIFS,SUMIFS,MAXIFSと同じ処理|Power Query(M言語)入門(2023-02-28)
新旧マスタの差異比較|Power Query(M言語)入門(2023-02-28)
有効な最新単価の取得|Power Query(M言語)入門(2023-02-26)
有効な最新単価の取得|Power Query(M言語)入門(2023-02-21)
グルーブ内の最小・最大|Power Query(M言語)入門(2023-02-17)
2つのテーブルのマージ|Power Query(M言語)入門(2023-02-15)
「売上」が数値の行のみ取り込む|Power Query(M言語)入門(2023-02-13)
A列のヘッダー名を変更する|Power Query(M言語)入門(2023-02-11)
CSVのA列が日付の行だけを取り込む|Power Query(M言語)入門(2023-02-10)
列数不定のCSVの取り込み|Power Query(M言語)入門(2023-02-09)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.マクロって何?VBAって何?|VBA入門
7.並べ替え(Sort)|VBA入門
8.エクセルVBAでのシート指定方法|VBA技術解説
9.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
10.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ