アプリ版:「スタンプのみでお礼する」機能のリリースについて

If Range("A1") = "" Then Exit Sub と

If Range("A1") = "" Then
Exit Sub

では違うのですか?
通常改行すると思っていたのですが、改行したらエラーになってしまいました。

A 回答 (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ではないですが、私も改行するように教えられました。)
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/03/18 09:53

経験上下記でやってます。

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

ありがとうございます。

お礼日時:2003/03/18 09:51

改行する場合は、



If Range("A1") = "" Then _
Exit Sub

というふうに 行末に _ をつけます。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2003/03/18 09:50

If文を複数行に別けて記述する場合には、"End If"が必要になります。



If Range("A1") = "" Then Exit Sub

If Range("A1") = "" Then
  Exit Sub
End If
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/03/18 09:50

END IF 


がないからではないでしょうか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/03/18 09:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!