「vbaステートメントって」
という検索キーワードで、このサイト・インストラクターのネタ帳へのアクセスがありました。
VBA(Visual Basic for Applications)の、「ステートメント」という言葉の定義を調べていた方による検索キーワードです。
Microsoftのサイト・ヘルプでは、「ステートメント」という語句が、2種類の使われ方をしています。
このために混乱してしまう方は少なくないと感じています。
Microsoftのサイト・ヘルプには、広義のステートメントと狭義のステートメントが混在しています。
広義のステートメント
「VBE の用語集」では、広義のステートメントについて書かれています。1 種類の処理、宣言、または定義を表す、構文的に完全な単位。通常では 1 行に 1 ステートメントですが、コロン (:) を使用することで 1 行に複数のステートメントを記述できます。また、行連結文字 (_) を使用することにより、論理的な 1 行を物理的な複数行に継続できます。
例えば、
Sub samp()
Range("A1").Select
End Sub
という3行のSubプロシージャの場合、それぞれの1行が、全部ステートメントです。
「1 種類の処理、宣言、または定義を表す、構文的に完全な単位」ですから。
狭義のステートメント
「Office VBA 言語リファレンス-Visual Basic 言語リファレンス-ステートメント」には、狭義のステートメントが列挙されています。
VBAの、関数ではない何らかの指示・命令を、ステートメントといっています。
例えば、
Sub samp()
Range("A1").Select
End Sub
であれば、1行目がSubステートメント、3行目はEndステートメントです。
2行目はオブジェクト式であって、狭義のステートメントには該当しません。
狭義のステートメントは2つに分類できる
この狭義のステートメントについては、言語の根幹に関わるものと、単なる指示・命令といったレベルのものとが混在しているために、混乱を深めていると考えています。
上記のSubステートメントやEndステートメントは、VBAという言語の根幹に関わるステートメントですが、例えば、フォルダーを作成するMkDirは、言語の根幹に関わるものではなく単なる指示・命令ですがステートメントとされています。
VBA関連書籍では狭義のステートメントをよく見かける
ネット情報より信頼性が高いと一般的には考えられる紙の書籍でも、2つの定義は混在して使われています。
どちらの定義のステートメントなのかを、文脈から判断するしかありませんが、VBAの世界では、狭義のステートメントのほうが、よく使われている印象があります。
『Vb & Vba in a Nutshell』には、以下の記述があります。
The elements of the VBA Language can be broken into four main areas: statements, functions, operators, and object model.この定義は、狭義のステートメントです。
『VBAエキスパート公式テキスト Excel VBA ベーシック』でも、
ステートメントとは、操作の対象(オブジェクト)に対して何かを働きかけるのではなく、マクロの動きを制御するなど特別な用途に使われる命令です。と、狭義のステートメントについて書かれています。
『Excelの極意 4 VBA』にも、
1つの完結した命令で、値を返さない命令のことを呼ぶ(値を返すのは「関数」と呼ぶ)。と、やはり狭義のステートメントについて書かれています。
『そこが知りたい!Excel VBAプロの技』には、狭義のステートメントについて書かれたあとに、
「ステートメント」という言葉は、これら以外に1つの命令を表す意味でも使用されます。と、広義のステートメントについて補足されています。
- Newer:Excelの全シートを表示するVBScript
- Older:Stopステートメント後に実行を再開するには?
Home » エクセルマクロ・Excel VBAの使い方 » VBAのステートメントとは