• 締切済み

【VBA】真の場合、何もしない処理をしたい

VBAで困っています。 (1)A=BかつC=D (2)A≠BかつC=D (3)A=BかつC≠D (4)A≠BかつC≠D 以上4つの条件がある時、(1)以外では処理をしたいです。 For n = 1 To 10 If (1)   何もしない処理 end if (2)、(3)、(4)にしたい処理 Next 条件(1)では、何もせずに、Nextまで飛んで、次のnで処理をする方法は有りますか?

みんなの回答

  • gosui
  • ベストアンサー率50% (1/2)
回答No.5

ご質問の状況がよくわかりませんが、 iif 2 or 3 or 4 then 処理 end if では駄目なのでしょうか。

回答No.4

簡潔に。 If Not 条件 Then という使い方がありますよ。 ま、つまり・・     For n = 1 To 10         If Not WorksheetFunction.And(A = B, C = D) Then             MsgBox "True"         Else             MsgBox "False"         End If     Next こんな具合で、ご提示の(1)の条件以外では「True」のメッセージボックスが出ます。 「何もしない」ならElseは不要ですよ。

回答No.3

Q、次のnで処理をする方法は有りますか? A、その意図は? 普通に考えたら、条件(1)の場合に For-Next そのものの実行を回避するのでは・・・

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

IF 文をつかttら仕舞いでしょう。何が陸奥kしいのかな 「何もしない」は、そのケース分けで、処理ステートメントを1行も書かなければしまいでは。 複雑な場合分けの場合、心配なのは、この組み合わせで、4通りですべてか? 記述が漏れたケースの時に、行く処理が予想外の処理でないかなどだと思う。 ーー 処理をしたいケースだけ書けば、該当しない時は何も処理されないはずだから、かんげることは必要でも、プログラムでは、記述を除外してよいケースがあろう。 こういうのは人に聞くのでなく。実際のレを使ってテストして、質問者が確信を持つものだ 。 自分でデータ例を作る方に労力を使え。」 また学校で習う「ベン図」式でも書いて考えること。 https://www.google.co.jp/#q=%E3%83%99%E3%83%B3%E5%9B%B3+%E5%95%8F%E9%A1%8C&*&spf=1

回答No.1

For n = 1 To 10 If Not (A=B And C=D) then (2)、(3)、(4)にしたい処理 end if Next または For n = 1 To 10 If A<>B Or C<>D then (2)、(3)、(4)にしたい処理 end if Next または For n = 1 To 10 If A=B And C=D Then rem 何もしない処理 Else (2)、(3)、(4)にしたい処理 end if Next または For n = 1 To 10 If A=B And C=D Then GoTo Continue end if (2)、(3)、(4)にしたい処理 Continue: Next ブール演算の基本 (あ)A、かつ、B=(Aでない、または、Bでない)の否定 (い)A、または、B=(Aでない、かつ、Bでない)の否定 (う)Aでない、かつ、Bでない=(A、または、B)の否定 (え)Aでない、または、Bでない=(A、かつ、B)の否定 を覚えましょう。 今回の場合 For n = 1 To 10 If (1) then   何もしない処理 end if (2)、(3)、(4)にしたい処理 Next は For n = 1 To 10 If (1) then   何もしない処理 else (2)、(3)、(4)にしたい処理 end if Next と書けます。 条件を「(1)なら」から「(1)でないなら」に変えれば For n = 1 To 10 If not (1) then (2)、(3)、(4)にしたい処理 else   何もしない処理 end if Next に書き換えできます。 「ElseからEnd ifまで、何もしない」のであれば「Else以降を省略可能」ですから For n = 1 To 10 If not (1) then (2)、(3)、(4)にしたい処理 end if Next に出来ます。 一方「(1)でない」つまり「not (A=B And C=D)」は、ブール演算の基本を参考に「A<>B Or C<>D」に書き換えできます。つまり For n = 1 To 10 If A<>B Or C<>D then (2)、(3)、(4)にしたい処理 end if Next と書けます。