
Access VBAで開発を進めていると、突然表示される「コンパイルエラー 修正候補: =」というメッセージに戸惑ったことはありませんか?
一見するとシンプルなエラーに見えますが、原因がわからないまま対処に時間を取られてしまうことも多い、意外と厄介なエラーです。
このエラーは、特定の条件で関数を呼び出す際に構文ルールに違反している場合に発生します。特に、引数が複数ある関数を呼び出すときに「Call」を付けていないことが原因であるケースが多く見られます。
本記事では、そんな「修正候補: =」のエラーが起きる具体的な理由と、Callを使うべき正しい書き方・タイミングについて、サンプルコード付きでわかりやすく解説していきます。
■ 結論:複数引数の関数呼び出し時は Call が必要
Access VBAでは、関数(Function)を呼び出す際に、引数が2つ以上あるときは Call を使わないと「コンパイルエラー」になる場合があります。
■ サンプル関数:AAA
以下のような関数が
「AAA」 という名前で
定義されているとします。
Function AAA(name As String, id As Integer)
'何らかの処理
End Function
■ パターン別の呼び出し方
▼ 引数なし:Call なしでも OK
AAA
または
Call AAA
▼ 引数1つ:Call なしでも OK
AAA("顧客テーブル")
または
Call AAA("顧客テーブル")
▼ 引数2つ以上:Call 必須!
Call AAA("顧客テーブル", 1) '← 正しい
AAA("顧客テーブル", 1) '← エラーになる可能性あり!
■ なぜCallが必要なのか?
VBAでは、関数の戻り値を使わない「副作用目的の呼び出し」には Call を使うのが正式な記述とされています。
特に引数が複数ある場合、戻り値を使わないのに Call
を省略すると、VBAが構文を正しく解釈できず構文エラーになることがあります。
■ まとめ:Callの使い分けルール
引数の数 | Callなし | Callあり | エラーの可能性 |
---|---|---|---|
0個 | 〇 | 〇 | なし |
1個 | 〇 | 〇 | なし |
2個以上 | ✕ | 〇 | あり |
このルールを知っておくだけで、「修正候補: =」エラーに悩まされることは大幅に減ります。
特に関数を多用するフォーム処理やバッチ処理では、Callの使い分けを意識すると安定したコードになります。