• ベストアンサー

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

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

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

  • ベストアンサー
  • roboubito
  • ベストアンサー率54% (6/11)
回答No.2

例えば、「A=B」の時、それ以降の処理をキャンセルしたければ if A=B then exit sub end if と、すればIF文以降の処理を中止し、そのプロシージャの処理を終了します。

その他の回答 (3)

  • NCU
  • ベストアンサー率10% (32/318)
回答No.4

Exit と End の違いについてもおさえておいて下さい。 子プロシージャである行以下の処理を中止した後、親プロシージャに戻って残りの処理を行うか否かの違いがあります。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>そのプロシージャ内の処理をすべてキャンセルするか やってしまってからやったことをなしにするにはそれなりの準備が必要なので、 プロシージャーの先頭でIF で条件を書いてプロシージャの内容を全てIFブロックで囲むか 条件を反対にして、 exit sub ですぐ抜ける

回答No.1

Exit Sub でOKです。

関連するQ&A

  • 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でIf条件Then 条件が成立したときの処理 で、その条件が成立したときには何もしない。 というのはどのように記述したらいいのでしょうか? 単純な質問で申し訳ありませんが教えてください。

  • VBAで条件式がうまく作れず困っています

    VBAで条件式を作りたいのですが、うまくできません。超初心者ですので、分かる方教えてください。 ある項目をみて、値が10、15、40のときその行を削除するというものです。その項目にはいろいろな値が入っています。 構造的には、 if(値が10または15または40) then   行削除 end if となるのでしょうが、カッコの中の書き方を教えてください。 よろしくお願いします。

  • エクセル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個ほどの条件での合致を検出したいです。 みなさんならどのように記述されるでしょうか?

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

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

  • 【VBA】改行されたセルの条件

    VBAにてA1のセルが画像のように改行されたセルであっても条件式で処理を行うようにしたいのですがうまくできません。 ↓式のように作成はしてみました どうしたら改行されたセルでも処理が行えるのでしょうか? Sub test() If Range("A1") = (行1行2の場合) Then 処理 End If End Sub

  • 簡単な事だと思うのですが vba での質問です。

    Private Sub 処理名()  Dim a as Byte vbOK = MsgBox ("OK? or Cancel?",vbOKCancel,"確認")  If vbOK = 1 Then   MsgBox "OKが押されました"  else if   MsgBox "キャンセルが押されました"  End if  ~以下長々と処理~     長々と処理の最後~ End Sub 例えば上記のような、vbaマクロがあったとします。 もし、キャンセルを押した場合、有無を言わさず全ての処理を終了したい場合どのように記述をすれば宜しいのでしょうか? キャンセルを押した場合後続の長々と処理部分は全てキャンセルしたいのです。 私はその方法が分からないために分岐がある度にif分のネストが深くなってしまって困っています。 どなたかご教授下さい。 よろしくお願い致します。

  • 【VBA】IF構文の条件式で範囲が同一の場合

    いつもこちらの識者の方々にはお世話になっています。 VBAの質問です。 IF構文でorを使って複数条件を指定したいのですが、下記のような場合、冗長な気がします。 Sub test() IF Left$(Cells(1, 1), 1) = "あ" or Left$(Cells(1, 1), 1) = ”い" or Left$(Cells(1, 1), 1) = ”う" Then Cells(1, 1).EntireRow.Delete End Sub 条件式で範囲が同一の場合、例えば IF Left$(Cells(1, 1), 1) = ”あ","い","う" Then Cells(1, 1).EntireRow.Delete のように、もっとスッキリした記述方法はありますでしょうか。

  • VBAで条件式について

    EXEL(VBA)で例えば、A列のデータが入っている行までの中で数値(x)が  x<2 ならばセルに色をぬる。そして空白セルと x>2ならば色をぬらない。 という条件式は、どうしたらいいのですか? Sub InteriorColor() For j= 5 to 21 worksheets(j).activate For i = 1 to 40 '30から40行ぐらい While cells(6+i,6)<>"" If(cells(6+i,6).value<2) Then ’6列7行目から  with selection.interior .Colorindex=45 .patern=xlsorid End with Wend End if Next i Next j End sub ということを連続していない列(5列ぐらい)に対してします。 同じ命令文になる部分もあるので簡潔にしたいという希望もあります。 上部の命令では無限ループの可能性があり実行が止まりません。 どのように記述したらいいのですか? また、同じブックのシート25枚のうち5枚目から21枚目に対して処理します。 5から21までのシートの間で関係ないシートが7枚目と10枚目と15枚目にあります。それを省いての処理もあれば教えてください。

  • excel vba call

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

専門家に質問してみよう