- ベストアンサー
エクセルVBAで If~ Then
If Range("A1") = "" Then Exit Sub と If Range("A1") = "" Then Exit Sub では違うのですか? 通常改行すると思っていたのですが、改行したらエラーになってしまいました。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
ANo.#2の補足です。 Excel VBAのヘルプで『キーワードを入力してください』の所に"IF"と入れると、その下の『キーワードを選択してください』の下に"If...Then...Else"と選択肢がでますから、それをダブルクリック、その下の選択欄に『If...Then...Elseステートメントの使い方』というのが出ますので、読んでみてください。 ・『1つのステートメントだけを実行するときは、If ... Then ... Elseステートメントの1行の構文を使います。』 ・『複数行のコードを実行するには、複数行の構文を使用する必要があります。この構文には、次の例のようにEnd Ifステートメントが含まれます。』 (以上、VBAのヘルプから引用) "Then"と"Else"の後に続く処理がそれぞれ1つずつであれば、1行に記述することが出来、"End If"は必要ありません。(厄介なことに、"End If"をつけるとエラーになります。) If ... Then x = 1 Else x = 0 処理が2つ以上になると、複数行の記述になるので、最後に"End If"が必要になります。(ご質問のように"Then"の後ろで改行した場合も、VBAでは複数行の記述と解釈されてしまいます。) If ... Then x = 1 Else x = 0 End If >通常改行すると思っていたのですが、・・・ "If"だけでなく、改行した方がプログラム作成者以外の者にも処理がわかりやすいという観点から、VBA以外のプログラミング言語でも、改行した書き方が推奨されているので、その影響でしょうね。(VBAではないですが、私も改行するように教えられました。)
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
経験上下記でやってます。文法ではどう説明されるのか 自信がないですが。 (1)If・・・Thenの後が、動作の場合はEnd IFは要らない。 例 Goto p01 Exit Sub など。 (2)Thenの後に、文やその集まりが来る時は、その後にEndIfが来て、そこで文の集まりの終わりを示す。 If (条件) Then (文1) (文2) ・・・・ End If
お礼
ありがとうございます。
- taknt
- ベストアンサー率19% (1556/7783)
改行する場合は、 If Range("A1") = "" Then _ Exit Sub というふうに 行末に _ をつけます。
お礼
ありがとうございます。
- deadline
- ベストアンサー率63% (1239/1943)
If文を複数行に別けて記述する場合には、"End If"が必要になります。 If Range("A1") = "" Then Exit Sub If Range("A1") = "" Then Exit Sub End If
お礼
ありがとうございます。 改行すれば End If が必要で、しないときには要らない。ということをはじめて知りました。
- hiyoruki
- ベストアンサー率7% (7/90)
END IF がないからではないでしょうか?
お礼
ありがとうございます。 改行すれば End If が必要で、しないときには要らない。ということですね。
お礼
くわしく解説していただきありがとうございます。 勉強になりました。