• ベストアンサー

エクセルVBAで If~ Then

If Range("A1") = "" Then Exit Sub と If Range("A1") = "" Then Exit Sub では違うのですか? 通常改行すると思っていたのですが、改行したらエラーになってしまいました。

質問者が選んだベストアンサー

  • ベストアンサー
  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.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ではないですが、私も改行するように教えられました。)

AQUALINE
質問者

お礼

くわしく解説していただきありがとうございます。 勉強になりました。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

経験上下記でやってます。文法ではどう説明されるのか 自信がないですが。 (1)If・・・Thenの後が、動作の場合はEnd IFは要らない。   例 Goto p01     Exit Sub  など。 (2)Thenの後に、文やその集まりが来る時は、その後にEndIfが来て、そこで文の集まりの終わりを示す。    If (条件) Then    (文1)    (文2)    ・・・・    End If

AQUALINE
質問者

お礼

ありがとうございます。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.3

改行する場合は、 If Range("A1") = "" Then _ Exit Sub というふうに 行末に _ をつけます。

AQUALINE
質問者

お礼

ありがとうございます。

  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.2

If文を複数行に別けて記述する場合には、"End If"が必要になります。 If Range("A1") = "" Then Exit Sub If Range("A1") = "" Then   Exit Sub End If

AQUALINE
質問者

お礼

ありがとうございます。 改行すれば End If が必要で、しないときには要らない。ということをはじめて知りました。

  • hiyoruki
  • ベストアンサー率7% (7/90)
回答No.1

END IF  がないからではないでしょうか?

AQUALINE
質問者

お礼

ありがとうございます。 改行すれば End If が必要で、しないときには要らない。ということですね。

関連するQ&A