• ベストアンサー

エクセルにて

エクセルのVBAでIf条件Then 条件が成立したときの処理 で、その条件が成立したときには何もしない。 というのはどのように記述したらいいのでしょうか? 単純な質問で申し訳ありませんが教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#79209
noname#79209
回答No.4

#1です。 確かに「条件を満たさないとき」が欲しい時ってありますよね。 「A=X」のときと「A=Y」のときは除きたい...の場合 If Not(A=X Or A=Y) Then と書きます。 「If Then」は「If」と「Then」の間の式が「True」になったときに 「Then」以降が実行されます。 もし、「A=Z」なら 「A=X」は「False」、「A=Y」も「False」なので「False Or False」は「False」 つまり「(A=X Or A=Y)」は「False」 よって「Not(A=X Or A=Y)」は「True」 或いは、「(A=X Or A=Y)=False」も「True」です。 かえって混乱させてしまったかな?

fisherman2
質問者

お礼

遅くまですいませんでした 「条件を満たさないときで」その条件が6項目あったもので どのように記述すれば良いのか分かりませんでした。 なんとか頑張ってみます。

その他の回答 (3)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.3

>条件が成立したときの処理 で、その条件が成立したときには何もしない というだけなら、はじめから if … then のコードを書きません。 その条件が成立しないときに処理することがあるなら、 if (条件が成立しない条件) then (条件が成立しないときの処理) end if にします。 ANo.1さんのいうように、 if not(条件) then (条件が成立しないときの処理) end if でもいいかと思います。 どうしても、条件が成立したときのif文を書きたければ、 If (条件) Then  end if か、 If (条件) Then  else (条件が成立しないときの処理) end if として、条件成立のときは処理を書かないとでもしてください。

noname#79209
noname#79209
回答No.2

#1です。 あるいは If (条件) = False Then とか... If 条件 Then Else  条件が合致しない時の処理 End If とか・・・

noname#79209
noname#79209
回答No.1

条件をNotでくくれば逆転するのでは?

fisherman2
質問者

補足

すいません、初心者です。 NOTでくくればというのは具体的にどのように記述するので しょうか?

関連するQ&A

  • エクセルVBAで条件式について

    例えば、エクセルVBAでif~thenのような条件式で条件に合わなかったら、そのプロシージャ内の処理をすべてキャンセルするか、条件にあわなかったら、それ以降の下段に記述されているプロシージャ内のVBAをキャンセルする方法はありませんか?

  • エクセルVBA アクティブのシートによって処理を変える方法

    エクセルの勉強をしていて行き詰まってしまったので相談させて下さい。 現在アクティブになっているシートによって処理を変えるVBAを作っています。 IFを使うことになるかと思うのですが”シート1がアクティブの場合”という 条件をうまく付けることが出来ません。 If "アクティブシートがsheet1" Then <<指定の処理>> ElseIf"アクティブシートがsheet2"Then <<指定の処理>> Else EndIf うまく説明できず申し訳ありませんが条件式の" "の中に入るコードを教えて下さい。 不足部分については補足させて頂きますのでよろしくお願い致します。

  • Excel VBA 条件分岐のスマートな書き方

    すみません。すごく初歩的な質問なのですが、 Excel VBAで以下のような条件分岐をさせたい場合、 もっとスマートな書き方できませんか? 命題 AとBに対して if not A then 処理X end if if not B then 処理Y end if if not(A and B) then 処理Z(この処理の中には処理Xと処理Yの結果が含まれている) end elseifを使った書き方が思い浮かばず、 同じことを何度も書いているようで、もっと上手に書けそうな気がしまして・・・ どなたかご教示頂けたらと思います。

  • エクセルのVBAについて(エクセル2003)

    エクセルのVBAで、セルを下のように指定したのですが If .Row = 3 And .Column = 16 Then ここで、 セル 16(P)の3と、17(Q)の3を結合したら、 実行時エラー'13': 型が一致しません。 というエラーが出てしまいます。 P3とQ3のセルを結合した場合の、番地の記述方法を教えていただけませんでしょうか? マクロに全く無知なため、あさってな質問でしたら申し訳ありません。 よろしくお願いいたします。

  • EXCEL VBAの OLEObjectについて

    EXCELでVBAを組んである処理をしているのですが、 EXCELのワークシート上にコントロールツールの OptionButtonをいくつか配置してあり、チェックのあるものを VBAのテーブルに入れて処理しようとしていますが、 ”実行時エラー1004 WorkSheetクラスのOLEObjectプロパティを取得できません。” というエラーが出てしまいます。 OLEObjectを使うのが初めてなので、初歩的なミスじゃないかと思います VBAの記述は以下のとおりです Sheets(ReferSheet).Select For i = 1 To 12 If Sheets(ReferSheet).OLEObjects("OptionButton" & i).Object.Value = True Then OpBt(i) = 1 End If Next どうかご指導お願いいたします。

  • エクセルVBA 不規則な条件に合致する場合

    エクセル2002 VBA での質問です。 A列に100~9999の数値データが不規則に存在しており、 105 108 113 114 121 531 553 2160 ・・・・・ のような不規則な値と合致するときに B列の処理をしたい場合のコードはどのように記述しますか? 私は for MyRow=1 to (最終行) if (cells(MyRow,1) =105 or cells(MyRow,1) =108 or cells(MyRow,1) =113 ・・・) then B列の処理 end if next MyRow のように If文 のなかで or を用いて全てを記述するかElseif でつなぐ方法しか思いつきません。 抽出対象の値は今後メンテナンスする必要はないのでコード内に記述しても構わないのですが or  や ElseIf を多用するのもどうかと思っています。 ※現実には50個ほどの条件での合致を検出したいです。 みなさんならどのように記述されるでしょうか?

  • Excel VBA If文の処理について

    Excel VBA If文の処理方法で質問です。 http://www.sigoto.co.jp/excel/statement/state09.htm を参考にしながら作ってます。 ▲空白なら の方法は記載されていますが… If 要素.Value = Empty Then ~ ▲セルに(文字・数値に関係なく)情報があるなら… という定義をしたいのですがどうやればよろしいでしょうか? If 要素.Value != Empty Then ~ これだとエラーが返りました。VBAは (※Else以外の方法で) 否定文の処理方法ってありますか? *内容抜粋* Set cell = Range("G5:I9") If cell.Value = "" Then '…ここの定義どうやれば良いか? ・ ・ End If アドバイスよろしくお願い致します。

  • excel vba call

    1. if 条件 then call プロシージャ または 2. sub name() if 条件 then exit sub call プロシージャ end sub 1の場合、条件不成立 2の場合、条件成立 いずれも、call プロシージャが実行されてしまうのですが、callは無条件に実行されてしまうのでしょうか。

  • Excel VBA Worksheet_Change イベントについて

    Excel VBA Worksheet_Change イベントについて質問です。 セルH8とI8を結合し、入力規則よりリストボックスを配置しました。 本シートにWorksheet_ChangeをVBAで作成しましたが、 セルH8:I8をDeleteすると実行時エラー13が発生します。 If Target = "" then exit sub end if や If Target.value = "" then exit sub end if や If Target <> "" then 処理 end if としても対処できませんでした。 よい対処方法のアドバイスよろしくお願いします。

  • VBAでif関数の処理を1行で記述したい

    VBAで if関数の処理が複数ある場合、 if ** then (AAA と BBB) のように1行で記述したいのですが、可能でしょうか? また、Cだと、;で1行に追記できるのですが、 VBAで複数処理を1行で書く方法はあるのでしょうか?

専門家に質問してみよう