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

ExcelマクロVBAの問題点と解決策、エクセルVBAの技術的解説
最終更新日:2019-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技術解説」の記事

複雑な条件(複数除外等)のオートフィルター(AutoFilter)
クリップボードを使わないセルのCopy
Rangeの使い方:最終行まで選択を例に
フルパスをディレクトリ、ファイル名、拡張子に分ける
Colorプロパティの設定値一覧
VBAを定型文で覚えよう
VBAこれだけは覚えておきたい必須基本例文10
エクセルVBAでのシート指定方法
文字列結合&でコンパイルエラーになる理由
手動計算時の注意点と再計算方法
VBAの用語について:ステートメントとは


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

VBAにおける変数のメモリアドレスについて|VBA技術解説(11月8日)
空文字列の扱い方と処理速度について(""とvbNullString)|VBA技術解説(1月7日)
Errオブジェクトとユーザー定義エラー|VBA入門(11月5日)
シングルクォートの削除とコピー(PrefixCharacter)|VBA技術解説(11月4日)
ユーザー定義型の制限とクラスとの使い分け|VBA技術解説(11月3日)
クリップボードに2次元配列を作成してシートに貼り付ける|VBA技術解説(11月1日)
VBAクラスを使ったイベント作成(Event,RaiseEvent,WithEvents)|VBA技術解説(10月31日)
VBAクラスのAttributeについて(既定メンバーとFor Each)|VBA技術解説(10月19日)
VBAの用語について:ステートメントとは|VBA技術解説(10月16日)
VBAのマルチステートメント(複数のステートメントを同じ行に)|VBA技術解説(10月14日)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数宣言のDimとデータ型|ExcelマクロVBA入門
6.繰り返し処理(For Next)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.ひらがな⇔カタカナの変換|エクセル基本操作
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.セルに文字を入れるとは(Range,Value)|VBA入門



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

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


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




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