• ベストアンサー

エクセル 条件に合わせてマクロを停止させたい

VBA初心者です。よろしくお願いします。 Sub テスト1() Select Case Cells(ActiveCell.Row, "a").Value Case "○" テスト2 Case "×" ここでマクロを停止させたい End Select End Sub これをループさせているのですが、”a”に”×”がきたときにマクロを停止させる記述方法はありますか?

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

~前略 Case "×" stop 'ここでマクロを停止させたい End Select とすれば、Stopで止まります(中断)けど もしかしてプロシージャから抜けるのでしたら Stop → Exit Sub にしてください。 ? または、Case "×" の行にカーソルを持って行って、F9 を押せば その行が赤くなりブレークポイントを設定したことになります。

c7_d30ea200
質問者

お礼

止まりました! 回答ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル マクロ CASEの使い方

    超初心者です。よろしくお願いします。 以前にこのような使い方を教わりました。 Sub test1() Select Case Cells(ActiveCell.Row, "b").Value Case "夏" test2 Case "冬" test3 End Select End Sub 夏と冬で条件を分けているのですが、これを変えて Cells(ActiveCell.Row, "b").Value が空白じゃないときにtest2を実行して空白のときにtest3を実行するためにはどのように書いたら良いですか?

  • セルを選択するマクロ(エクセル)

    Sub test() x = ActiveCell.Row y = ActiveCell.End(xlToLeft).Column z = ActiveCell.End(xlToRight).Column Range(Cells(x, y), Cells(x, z)).Select End Sub アクティブセルが含まれている行のみで、データが入力されている連続したセルを選択状態にするマクロとして、上記を考えました。 上記を違った形でもっと簡潔に表すことは可能でしょうか?

  • Do loopのマクロ

    以下のマクロの問題点を教えていただきたいのです。 A列を上から順番に調べて、値が10のときだけBに分岐して処理を行い(処理の内容は省略してあります)、またAに戻って、空白のセルが見つかったら処理をやめる、というマクロです。 ところが、これを実行すると空白のセルが見つかってもマクロが止まりません。何が問題でしょうか。 Sub A() Cells(1, 1).Select A: Do Until ActiveCell.Value = "" If ActiveCell.Value = 10 Then GoTo B End If ActiveCell.Offset(1, 0).Select Loop B: ActiveCell.Offset(1, 0).Select GoTo A End Sub

  • ExcelのマクロをAccessで動かすには…

    今までExcelを使用していてVBAも段々と理解してきたのですが 今回Accessを使用することになって詰まってしまいました。 下のようなExcelのマクロ(VBA)があるのですが、 これをAccessでも同じように動かしたいのですがわかりません(汗) ----------------------------------------------- Sub テスト() Dim GYO As Long GYO = 1 Do Until Worksheets("テスト").Cells(GYO, 1).Value = "" If Worksheets("テスト").Cells(GYO, 1).Value >= 80 Then Worksheets("テスト").Cells(GYO, 2).Value = "合格" Else Worksheets("テスト").Cells(GYO, 2).Value = "不合格" End If GYO = GYO + 1 Loop End Sub ----------------------------------------------- これでAccessのレコード一つ一つの合否を入力する欄に 自動で入力されるようにしたいのですが、 Accessでの記述方法がよくわからないのです。(^_^;) お詳しい方、よろしくお願いしますm(_ _)m

  • excel マクロ 「select case」への条件盛り込み方法について

    初めまして。 仕事にて、EXCELに工程遅延の原因を記入しているのですが、 同じ理由(約50種類あります)を何度も記入する必要があるため、 理由ごとに番号を割り振って、ボタン一つで記入できるようにしたいと思っています。 そこで、下記のようにマクロを作成してみたのですが、 現状では、例えばCells(1, 1)に何かを特記していた場合、 記入後にこのマクロを実行してしまうと、Cells(1, 1)の特記が、 上書きにより消えてしまいます。 そこで、Cells(num, 1)が空白であれば、Cells(num, 1)に上書きする、 という条件を付加したいのですが、可能でしょうか。 EXCELマクロの本を参考に作成しているのですが、 組み合わせの方法が分かりません。 お時間がある方いらっしゃいましたら、 ご検討よろしくお願い致します。 Sub 理由挿入() Dim num As Integer For num = 1 To 100 Select Case Cells(num, 2).Value Case 1 Cells(num, 1).Value = "理由1" Case 2 Cells(num, 1).Value = "理由2" Case 3 Cells(num, 1).Value = "理由3" Case 4 Cells(num, 1).Value = "理由4" End Select Next End Sub

  • Excelマクロのことで教えて下さい

    初歩的なことですみません。 E列の値をF列に値を入れるために下記のマクロを組みました。 Sub test() Worksheets("Sheet1").Select Dim i As Long For i = 2 To Cells(Rows.Count, 4).End(xlUp).Row Range("F2").Value = "=E2/1024/1024" Cells(i, 6).FillDown Range(Cells(2, 6), Cells(i, 6)).Copy Range("F2").PasteSpecial Paste:=xlValues Next i End Sub ところがF列に「値のみを貼り付け」をした時に、途中から同じ値のみがコピーされてしまい困っています。 (画像参照) うまく貼り付けることができるマクロをお教え下さい。 よろしくお願いいたします。

  • エクセルVBAで無限ループ

    教えてください。 以下の2つのエクセルマクロはまったく同じことをさせようとしているのですが、test02の方は.Offset(1).Activateが働かないのか、無限ループに陥ってしまいます。 単にActiveCell.という記述をWith~End Withでまとめただけなのになぜこうなるのでしょうか? Sub test01() ActiveSheet.Cells(1, 1).Activate Do While ActiveCell.Value <> "" If Not IsNumeric(ActiveCell.Value) Then ActiveCell.Offset(0, 1).Value = "文字" ElseIf ActiveCell.Value > 0 Then ActiveCell.Offset(0, 1).Value = "正数" ElseIf ActiveCell.Value < 0 Then ActiveCell.Offset(0, 1).Value = "負数" Else ActiveCell.Offset(0, 1).Value = "その他" End If ActiveCell.Offset(1).Activate i = i + 1 Application.StatusBar = i Loop End Sub Sub test02() ActiveSheet.Cells(1, 1).Activate With ActiveCell Do While .Value <> "" If Not IsNumeric(.Value) Then .Offset(0, 1).Value = "文字" ElseIf .Value > 0 Then .Offset(0, 1).Value = "正数" ElseIf ActiveCell.Value < 0 Then .Offset(0, 1).Value = "負数" Else .Offset(0, 1).Value = "その他" End If .Offset(1).Activate i = i + 1 Application.StatusBar = i Loop End With End Sub

  • VBA (Row とRowsの違いについて)

    いつもお世話になっております。 VBA初心者ですが、RowとRowsの違いについて今一つ分かりません。 添付ファイルのように、A2:A25まで数字を入れた表を作って、今ある知識で行数をカウントするコードをいくつか書いてみました。 test1:A2から始まる表を構成するトータル行数を返す。 test2:?? test3:A2から始まる表の最終行番号を返す。 test4:test1と同じ test5:??? (1)test2、5は同じ内容のコードになると思いますが・・結果の『2』は何を意味しているのか分かりません。 (2)RowとRowsの違いは簡単に言うとどういう事でしょうか? まとまりの無い文章で申し訳ありませんが、よろしくお願いいたします。 Sub test1() Cells(2, 2).Value = Cells(2, 1).CurrentRegion.Rows.Count End Sub Sub test2() Cells(2, 3).Value = Cells(2, 1).CurrentRegion.Row End Sub Sub test3() Cells(2, 4).Value = Cells(2, 1).End(xlDown).Row End Sub Sub test4() Cells(2, 5).Value = Range(Cells(2, 1), Cells(2, 1).End(xlDown)).Rows.Count End Sub Sub test5() Cells(2, 6).Value = Range(Cells(2, 1), Cells(2, 1).End(xlDown)).Row End Sub

  • エクセルマクロ-条件付き繰り返し

    マクロ初心者です。(エクセル2003使用) シート1にある表で、M列が空白以外(処理済みなどの値がある場合)である場合、その行全体をコピーし、シート2の最終行に貼り付けして、シート1からはその行を削除するマクロを作成したいと思っていますができません。 すみませんが、どなたかご教授願います。 (シート1の表) ・8行目が題目となっており、A9から表となっています。 ・表の全体サイズは、横がAからMまでで、縦はC(シー)の管理番号行分までとなっています。(Mは、空欄があったり値(処理済みなどの値)が入っていたりしています) (考えているマクロ) ・Loopの回数は、Cの管理番号が終わるまで ・IFでCに値があり、Mが空欄だった場合は、そのまま(何もしない) ・Cに値があり、Mに値があった場合は、その行全体を選択しコピーし、シート3の最終行に貼り付け、シート1のその行は削除する Sub 処理済み() Range("C9").Select Do While ActiveCell.Value = "" ActiveCell.Offset(1).Select Loop If ActiveCell.Offset(, 10).Value = "" Then そのまま Else If ActiveCell.Offset(, 10).Value = "値があったら" Then その行全体を Select.Copy Sheets("Sheet2").Select Dim 下 下 = Range("A").End(xlDown).Row ペースト 削除 End If End Sub すみませんが、どなたか教えていただけましたら助かります。 よろしくお願いいたします。

  • エクセル VBAで入力フォームを作成し、そのフォームで検索をしようとF

    エクセル VBAで入力フォームを作成し、そのフォームで検索をしようとFindを使って動かしたのですが、一度表示したあと、再度別の値で検索しても最初に検索したデータが表示されてしまいます。 色々調べましたが、全く分からずこちらに質問しました。VBAは全くの初心者で本やHPを見ながら作っています。勉強不足なのは承知しております。どなたかご親切な方のご指導をお待ちしています。 顧客名   ・・・・・・・・・・・ 店舗名   ・・・・・・・・・・・ 略称    ・・・・・  ←ここに入力して検索をクリックします。 ・ ・ Private Sub 検索_Click() Dim w As Variant Dim r As Range ActiveSheet.Unprotect w = 略称.Value If w = "" Then Exit Sub Set r = Cells.Find(What:=w, After:=ActiveCell, LookIn:=xlValues, LookAt:= _ xlPart, SearchOrder:=xlByRows, MatchCase:=False _ , MatchByte:=False, SearchFormat:=False) If TypeName(r) = "Range" Then 略称.Value = Cells(ActiveCell.Row, 2).Value 顧客名.Value = Cells(ActiveCell.Row, 3).Value 店舗名.Value = Cells(ActiveCell.Row, 4).Value 締日.Value = Cells(ActiveCell.Row, 5).Value 売単価.Value = Cells(ActiveCell.Row, 6).Value サイクル.Value = Cells(ActiveCell.Row, 7).Value 郵便番号.Value = Cells(ActiveCell.Row, 8).Value 住所.Value = Cells(ActiveCell.Row, 9).Value 電話番号.Value = Cells(ActiveCell.Row, 10).Value FAX.Value = Cells(ActiveCell.Row, 11).Value 担当者.Value = Cells(ActiveCell.Row, 12).Value End If ActiveSheet.Protect End Sub

専門家に質問してみよう