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

ExcelマクロVBAの問題点と解決策、VBAの技術的解説
公開日:2019-10-16 最終更新日: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の用語について:ステートメントとは
オブジェクト変数とは何か
・そもそも変数とは何か ・変数の入れ物としての大きさは ・オブジェクト変数にオブジェクトは入っていない ・オブジェクト変数のメモリアドレス ・Is演算子によるオブジェクトの比較 ・TypeOf演算子 ・オブジェクト変数を使う時の注意点 ・オブジェクト変数の最後に
VBAの小数以下の演算誤差について
・小数以下の演算誤差とは ・小数以下の演算誤差を実際のVBAで確認 ・データ型で小数以下の演算誤差に対応 ・小数以下の演算誤差にデータ型以外で対応する ・VBAの小数以下の演算誤差の最後に
スピルでVBAの何が変わったか
・Rangeオブジェクトに追加されたプロパティ ・セルに数式を設定する場合 ・1次元配列を返すユーザー定義関数 ・2次元配列を返すユーザー定義関数 ・JAG配列を返すユーザー定義関数 ・スピルのVBAでの活用について
CharactersプロパティとCharactersオブジェクト
・Charactersプロパティ ・Charactersオブジェクト ・CharactersプロパティとCharactersオブジェクトの使用例
ユーザーに絶対に停止させたくない場合のVBA設定
ユーザー操作によりマクロVBAが実行中に停止させられてしまう場合があります。再実行可能であれば問題ありませんが、途中で強制停止された場合のデータ保証が出来ないと言った場合もあるでしよう。マクロ実行でも、以下のキーボード操作でVBAは停止できてしまいます。
印刷範囲の設定・印刷範囲のクリア
・印刷範囲の設定 ・印刷範囲の取得 ・印刷範囲のクリア
VBAの省略可能な記述について
・変数の宣言 ・変数宣言のデータ型 ・Application.ScreenUpdating = True : Application.DisplayAlerts = True ・Applicationのプロパティ ・Applicationのメソッド ・Range.Value ・プロシージャーのCall ・メソッドのCall ・Let ・Next 変数 ・Step 1 ・引数が無い場合の() ・名前付き引数 ・メソッドの規定値 ・組み込み列挙 ・関数のモジュール名 ・コレクションのItem ・VBAの省略可能な記述の最後に


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

VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)
スピらない スピル数式 スピらせる|エクセル雑感(2023-12-06)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.条件分岐(IF)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




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


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



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