web-dev-qa-db-ja.com

複数行のIfステートメント

複数の条件を持つifステートメントがあります。それらをすべて単一のウィンドウビューで見ることはできません。それらを異なる行に分ける方法はありますか、それともすべてを1行で記述する必要がありますか?

26
Yokhen

VBA行継続文字はアンダースコア_

if ( _
    (something) _
    or (somethingelse) _
) 
48
Cylindric

行継続文字_を使用できます

これらはすべて同じです。

If Something Or  SomethingElse Or AnotherThing Then

If Something Or SomethingElse _
   Or AnotherThing Then

If Something Or _
   SomethingElse Or _
   AnotherThing Then
11
Ken White

上記のように、アンダースコアを使用すると、1つの「IF」ステートメントで長い条件セットを分割できます。

条件が多すぎて読みにくい場合は、ブール値を使用して条件を表します。もっとコードがあるように思えますが、読みやすいと思います。

次のことを行う必要があるシナリオがある場合:

IF (X = something1) OR (X = something2) OR (X = something2) OR (X = something2) OR (X = something2) OR (X = something2) OR (X = something2) OR (X = something2) THEN
END IF

私はこれを行うことができます:

IF _
    (X = something1) _
    OR (X = something2) _
    OR (X = something3) _
    OR (X = something4) _
    OR (X = something5) _
    OR (X = something6) _
    OR (X = something7) _
    OR (X = something8) _
THEN
END IF

...または私はこれを行うことができます...

blnCondition1 = (X = something1)
blnCondition2 = (X = something2)
blnCondition3 = (X = something3)
blnCondition4 = (X = something4)
blnCondition5 = (X = something5)
blnCondition6 = (X = something6)
blnCondition7 = (X = something7)
blnCondition8 = (X = something8)

IF blnCondition1 OR blnCondition2 OR blnCondition3 OR blnCondition4 OR blnCondition5 OR blnCondition6 OR blnCondition7 OR blnCondition8 THEN
END IF

もちろん、サンプルのBOOLEAN変数が定義されており、blnCondition1のような名前の代わりに、意味のある名前を使用します。

繰り返しますが、それは私が持っている好みです。

2
Jason TEPOORTEN

アンダースコアでそれらを破る_?

Microsoftライブラリ

上記のリンクから

If ActiveSheet.ChartObjects(1).Chart.ChartTitle = _
      ActiveSheet.Range("a2").Value Then
   MsgBox "They are equal."
End If
1
DevilWAH

アンダースコアを使用できると確信しています_行を分割します。

0
smitec