2016-06-01 8 views
-1

ので、私は一種のエクセルVBAでUDFを書いメートル:今、私はしかし、私は「あれば終わるを使用するはずのか不思議だった、機能がうまく働くようであること、気づいそれ以外の場合はExcel VBA - "End If"が必要ですか?

function ... if ... then ... else for i... to ... equations ... next i * end function

コード内の(*)の位置にありますか?もし私がそうするならば、私はエラーメッセージを受け取りました。だから、一般的には、そこには "終わり"の必要性はありません?前もって感謝します!

/edit: 'if ... then ... else'は1つのライナーです。しかし、elseブロックには複数の行、特にループが含まれています。

+0

Ifが1つのライナー(If、Then、Elseを1行で表示)の場合、End Ifを必要としない場合 – gizlmo

+0

実際のコードをコピーしてください。 1行のif文を実行できます。それが1行にある場合は、終了する必要はありませんが、forサイクルはifの一部ではありません。要するに、forサイクルはいずれかの方法で実行されます。 複数行の場合は、末尾が必要です。 – CyberClaw

+0

これはすべてVBAのヘルプに詳しく説明されています。それを読んだことはありますか? –

答えて

2

IF THEN ELSEを1行に入れると、if条件はその行で終了し、次の行は何に関係なく実行されます。

例えば、

If true then x =1 else x = 2 
y = 1 

この場合

真、xは1になり、偽、xは2であり、そしてyは1

なる場合yは1

なる場合


この場合、

trueの場合、xは1になり、yは

falseの場合は空になります、xは2になり、あなたが

If true then x = 1 else 
x = 2 
を行う場合は、yは、さらに1


になります

xは真または偽に関係なく常に2になります

0

はい、End If文が必要です。エラーが発生します。

それはあなたのIfステートメントは以下のように、あなたがそれを必要としないワンライナーである場合にのみ、次のとおりです。

If 1 = 1# Then result = "true" 

しかし:それは閉じられていない限り

If 1 = 1# Then 
    result = "true" 

は動作しません。 out with Endこの場合、

If 1 = 1# Then 
    result = "true" 
End If 

あなたの関数の構造を正確に見ることはできませんが、End Ifなしで動作する場合は、それが有効な1行のIf文であると推測するか、On Error Resumeがコードのどこかにあるとします。

関連する問題