エラー内容
VBAコンパイル時に、「修正候補: 式」と表示される。
原因と解決方法
プログラムの記述が途中で切れていたり、記述もれがある時に表示されるメッセージです。
プログラムを書いてる途中で、Enter押したり、違う行に移動しても表示されます。ちょっとジャマなメッセージなんですよねぇ・・・
4つの原因と解決方法が考えられます。
原因1. Ifの条件部分を書いていない
解説
If文の条件部分が正しく書けてないのが原因です。
サンプルソースでは、=の右側に条件となる値がありません。
1 2 3 4 5 6 7 8 9 |
Sub ErrSample14_01() If kekka = Then MsgBox "100点です" End If End Sub |
解決方法
条件部分を正しく修正します。
サンプルソースでは、=の右側に条件100を追加。
1 2 3 4 5 6 7 8 9 |
Sub ErrSample14_01() If kekka = 100 Then MsgBox "100点です" End If End Sub |
原因2. 引数を書いていない
解説
引数部分がカンマで終わっていて、その後に引数の指定がないのが原因です。
1 2 3 4 5 6 7 |
Sub ErrSample14_02() MsgBox Mid("サイト名はえくとしょです", 6,) '← カンマで終わってる End Sub |
解決方法
引数部分は、変数や値で終わるようよう修正します。
引数を省略する場合は、直前のカンマも省略します。
1 2 3 4 5 6 7 8 9 |
Sub ErrSample14_02() MsgBox Mid("サイト名はえくとしょです", 6, 5) '← 引数を指定する場合は、カンマの後に指定 MsgBox Mid("サイト名はえくとしょです", 6) '← 引数を省略する場合は、カンマを削除 End Sub |
原因3. インクリメント演算子や、デクリメント演算子を使ってる
解説
VBAでは変数の増減をするインクリメント演算子(++)やデクリメント演算子(–)が使えません。
JavaやCなど他の言語を使ったことがある人が、うっかりするミスです。
1 2 3 4 5 6 7 8 9 10 11 |
Sub ErrSample14_03() Dim i As Long i++ i-- End Sub |
解決方法
VBAでは省略した書き方がないので、素直にそのままコーディングしましょう。(計算結果を左辺の変数に保存)
1 2 3 4 5 6 7 8 9 10 11 |
Sub ErrSample14_03() Dim i As Long i = i + 1 i = i - 1 End Sub |
原因4. +=演算子や-=演算子を使ってる
解説
VBAではインクリメント演算子だけでなく、+=演算子や-=演算子も使えません。
VB.netでは使えるので、「おなじVB系なのにVBAダメなん・・・」と思っちゃいます
1 2 3 4 5 6 7 8 9 10 11 |
Sub ErrSample14_04() Dim i As Long i+=1 i-=1 End Sub |
解決方法
素直にそのままコーディングしましょう。(計算結果を、左辺の変数に保存)
1 2 3 4 5 6 7 8 9 10 11 |
Sub ErrSample14_04() Dim i As Long i = i + 1 i = i - 1 End Sub |