こんにちは、はやぶさです。
日々ExcelやPythonを使って、業務を効率化しています。
前回は、ExcelマクロとVBA入門シリーズの一部として「プログラミングの3つの基本構造」にスポットを当てました。
今回は、その続編としてVBAにおける代表的な用語について解説します。
プログラミング言語は、各々が特有の用語を持っていますが、VBA(Visual Basic for Applications)では、特に独自性のある用語の使用が目立ちます。
本稿では、VBAにおいて頻繁に使用されるキーワード、予約語、演算子、識別子、およびステートメントについて概要を解説します。
VBAにおけるプログラミングスキルをさらに向上させたい方々にとって、この記事が貴重な洞察と実用的な知識を提供し、作業のさらなる効率化に役立つことを願っています。
キーワード
キーワードは、プログラム内で特別な意味を持つ単語や記号です。
ステートメント、関数名、演算子などに用いられ、プログラムの実行において動作や構造を定義するのに用いられます。
キーワードの種類と役割
VBAにおけるキーワードは大きく分けて以下のカテゴリに分類されます:
- 制御構造キーワード: If、For、Whileなどのキーワードは、プログラムの流れを制御します。条件分岐やループといった基本的な構造の構築に必要です。
- データ型キーワード: Integer、String、Booleanなどは、変数や定数のデータ型を指定する際に使用されます。プログラムで扱うデータの種類と構造を明確にします。
- アクセス修飾子キーワード: Public、Privateなどは、変数、定数、プロシージャのスコープやアクセスレベルを定義するために用います。これにより、プログラムのモジュール間のデータの可視性やアクセス制御が可能になります。
- 演算子キーワード: And、Or、Notなどは、論理演算や条件評価に利用されるキーワードです。これらは特に条件分岐やループの条件式で頻繁に活用されます。
プログラムが期待通りに動作するためにキーワードは不可欠です。
ステートメント、関数名、演算子など全てキーワードになります。
予約語
予約語は、VBAによって特別な意味で使用されているため、変数名などの識別子として利用することは不可能です。
例として、「If」、「Len」、「Is」などがあります。
予約語を識別子として使用しようとすると赤字になり、構文エラーが発生します。
キーワードの多くは予約語として設定されていますが、全てのキーワードが予約語であるわけではない点に注意が必要です。
予約されていないキーワードはプログラミングの識別子として使用できます。
ただし、コードの可読性が低下し、検出しにくい微妙なエラーの原因となる可能性があるため、使用することは避けてください。
https://learn.microsoft.com/ja-jp/dotnet/visual-basic/language-reference/keywords/
演算子
演算子は、プログラム内でデータの操作や評価を行う上で使用する記号や単語です。
これらの演算子は、単純な算術計算から複雑な条件式の評価に至るまで、多岐にわたる操作を可能にします。
ここでは、演算子の各カテゴリを詳細に解説します。
算術演算子
算術演算子は数学的計算に使用され、一般的に以下のような操作を含みます:
- 加算(+): 足し算
- 減算(-): 引き算
- 乗算(*): 掛け算
- 除算(/): 割り算
- 整数除算(\): 割り算(小数点以下は切り捨て)
- 剰余(Mod): 割り算のあまり
- 指数(^): べき乗
比較演算子
比較演算子は二つの値を比較し、結果としてブール値(TrueまたはFalse)を返します。
条件分岐やループ制御で広く使用されます:
- 等しい(=): 二つの値が等しいかどうか。
- より大きい(>): 左の値が右の値よりも大きいかどうか。
- より小さい(<): 左の値が右の値よりも小さいかどうか。
- 以上(>=): 左の値が右の値と等しいか、それよりも大きいか。
- 以下(<=): 左の値が右の値と等しいか、それよりも小さいか。
- 異なる(<>): 二つの値が異なるかどうか。
- 同一(Is): 二つのオブジェクトが同じものを指しているかどうか。
- 類似(Like): 文字列が特定のパターンにマッチするかどうか。
連結演算子
文字列を結合する際に用いられます:
- 文字列の連結(&): 二つ以上の文字列を結合します。
- 加算(+): 主に数値の加算に使用されますが、文字列の結合にも使われます。
論理演算子
論理演算子は、True(真)またはFalse(偽)のブール値を扱うのに使われ、条件式や複雑な論理判断に重要です:
- 論理積(And): 二つの条件が両方とも真かどうか。
- 論理和(Or): 二つの条件の少なくとも一つが真かどうか。
- 否定(Not): 条件の真偽を反転させる。
- 排他的論理和(Xor): 二つの条件のうち、一方のみが真の場合に真。
- 同値(Eqv): 二つの条件が同じ真偽値を持つ場合に真。
- 含意(Imp): 第一の条件が偽、または第二の条件が真の場合に真。
識別子
識別子は、変数や関数などプログラムの要素につける名前です。
効率的で読みやすいコードを書くには、識別子の命名規則を理解することが大切です。
識別子の命名規則
識別子を命名する際には、以下のルールが適用されます:
- 使用可能な文字: 定数名には、文字(日本語を含む)とアンダースコア(_)を使用できます。
- 開始文字: 数字やアンダースコア(_)で始まる名前は使用できません。
- 一意性: 同一のスコープ内で、同じ名前の定数、変数、またはプロシージャを定義することはできません。
- 名前の長さ: 定数名は最大で255文字までです。
識別子の役割
適切に使うと、次のような利点があります:
- 可読性向上: 明瞭な識別子により、プログラムの目的や仕組みが他人にも理解しやすくなります。
- 保守性向上: 識別子を明確にすることで、将来的なコード修正や拡張が容易になります。
- エラー減少: 一貫した命名規則の使用と予約語の回避により、構文エラーや予期せぬ動作のリスクを下げられます。
コードの可読性および保守性を保つため、識別子には意味のある名前を付けることが重要です。
1 2 3 4 5 6 7 8 |
' 良くない例 Dim a As Long ' 良い例 Dim userAge As Long ' 日本語でもOK Dim ユーザー年齢 As Long |
ステートメント
ステートメントはVBAでプログラムの動作を定義するコードの一部です。
データ宣言、条件分岐、ループ、関数やサブプロシージャの呼び出しなど、さまざまな操作に使われます。
宣言ステートメント
- Dim: プロシージャレベルの変数を宣言する。
- Const: 定数を宣言する。
- Private: モジュール全体で使う変数などを宣言する。
- Public: プロジェクト全体で使う変数などを宣言する。
条件分岐ステートメント
- IF: 条件がTrueなら一方の処理、Falseなら他方を行う。複数条件にはElseIf。
- Select Case: 値に応じて異なるケースの処理を選択。
ループ制御ステートメント
- For…Next: 回数を指定してループ。例: For i = 1 To 10 で1から10まで。
- For…Each: コレクションの各要素に対してループ。
- Do…Loop: 条件がTrueのうちループ。Do WhileやDo Untilで条件指定。
- While…Wend: Trueの間ループするが、Do…Loopが推奨されます。
サブプロシージャと関数
- Sub: タスクを実行し、値は返さないコード。
- Function: タスクを実行し、値を返すコード。
その他のステートメント
- Call: サブプロシージャや関数を呼び出す。
- Set: オブジェクト変数を設定する。
- With…End With: 一つのオブジェクトに対して複数操作を簡単に記述。
- On…Error: プログラム実行中のエラー処理を記述。
まとめ
Excel VBAプログラミングにおける重要な用語の概要について説明してきました。
プログラミングの世界では、これらの用語が頻繁に使われ、その意味を深く理解することは開発プロセスをよりスムーズにし、より効率的なコードを書くために不可欠です。
キーポイント
- キーワード: プログラム内で特別な意味を持つ単語や記号です。
- 予約語: VBAによって特別な意味で使用されているため、識別子として利用することは不可能です。
- 演算子: プログラム内でデータの操作や評価を行う上で使用する記号や単語です。
- 識別子: 変数や関数などプログラムの要素につける名前です。
- ステートメント: データ宣言、条件分岐、ループなどさまざまな動作を定義するコードの一部です。
プログラミングは学習と実践の繰り返しです。諦めずに継続することで、やがては複雑な問題も解決できるようになります。
この記事が、Excel VBAの世界への興味をさらに深め、日々の作業を効率化するためのツールとしてExcelマクロとVBAを活用する一助となることを願っています。