みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

【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で処理をする方法は有りますか?

投稿日時 - 2017-04-06 11:24:58

QNo.9314065

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

ご質問の状況がよくわかりませんが、

iif 2 or 3 or 4 then
処理
end if
では駄目なのでしょうか。

投稿日時 - 2017-04-12 13:31:40

ANo.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は不要ですよ。

投稿日時 - 2017-04-07 17:15:12

ANo.3

Q、次のnで処理をする方法は有りますか?
A、その意図は?

普通に考えたら、条件(1)の場合に For-Next そのものの実行を回避するのでは・・・

投稿日時 - 2017-04-06 15:05:33

ANo.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

投稿日時 - 2017-04-06 14:29:23

ANo.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

と書けます。

投稿日時 - 2017-04-06 13:05:03

あなたにオススメの質問