• ベストアンサー

VBAで中止したいのですが、どうすれば良いのでしょうか。(素人ですので

VBAで中止したいのですが、どうすれば良いのでしょうか。(素人ですのでよろしくお願いします) D3が空欄の場合は、メッセージを出して、中止したいのです。 以下のようですと、メッセージ表示の後、続けて動作します。どうすれば良いのでしょうか。 よろしくお願いします。 Range("D3").Select If Range("D3").Value = "" Then MsgBox ("D3に入力して下さい") End If

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

●簡単なのは、Exit Subを入れる方法です。 If Range("D3").Value = "" Then   MsgBox ("D3に入力して下さい")   Exit Sub  '■これを追加 End If ●別な方法としては、Elseを追加して If Range("D3").Value = "" Then    MsgBox ("D3に入力して下さい") Else  '■これを追加   =ここには正しい処理= End If 以上です。

0pus0ne
質問者

お礼

早速、回答して頂き、ありがとうございます。

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

その他の回答 (2)

  • mar00
  • ベストアンサー率36% (158/430)
回答No.3

D3が空欄の場合中止するのではなく、InputBoxを使って 入力するようにしてはどうでしょうか。 If Range("D3").Value = "" Then x = InputBox("D3に入力して下さい") Range("D3") = x End If

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

次のようにすればよいでしょう。Exit Subを追加します。 If Range("D3").Value = "" Then MsgBox ("D3に入力して下さい") Exit Sub End If

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

関連するQ&A

  • 印刷後のVBAの実行 (3)

    Private Sub Workbook_BeforePrint(Cancel As Boolean) If ActiveSheet.Name = "Sheet1" Then If Range("D6").Value = "" Then Cancel = True MsgBox ("名前を入力してください") Range("D6").Select Exit Sub End If Else If ActiveSheet.Name = "Sheet2" Then If Range("C11").Value = "" Then Cancel = True MsgBox ("受付時間を入力してください") Range("C11").Select Exit Sub End If Else Exit Sub End If End If If Worksheets("Sheet1").Range("D5") = "不要" Then GoTo P1 ActiveSheet.Range("A70:Y70").Copy If Worksheets("Sheet3").Range("A1").Value = "" Then Worksheets("Sheet3").Range("A1").PasteSpecial Paste:=xlPasteValues Else Worksheets("Sheet3").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial _ Paste:=xlPasteValues End If Application.CutCopyMode = False P1: ActiveSheet.Range("A1").Select End Sub sheet1のD5に「不要」と入っていたら 24~33行目の作業がキャンセルになりますが sheet2のD5にも「不要」と入っていたら、同じ様にキャンセルできる様に出来ますでしょうか? ご回答お願いします

  • 印刷後のVBAの実行 (2)

    Private Sub Workbook_BeforePrint(Cancel As Boolean)   If ActiveSheet.Name = "Sheet1" Then     If Range("D6").Value = "" Then       Cancel = True       MsgBox ("名前を入力してください")       Range("D6").Select       Exit Sub     End If   Else     If ActiveSheet.Name = "Sheet2" Then       If Range("C11").Value = "" Then         Cancel = True         MsgBox ("受付時間を入力してください")         Range("C11").Select         Exit Sub       End If     Else              Exit Sub     End If   End If   ActiveSheet.Range("A70:Y70").Copy   If Worksheets("Sheet3").Range("A1").Value = "" Then     Worksheets("Sheet3").Range("A1").PasteSpecial Paste:=xlPasteValues   Else     Worksheets("Sheet3").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial _       Paste:=xlPasteValues   End If   Application.CutCopyMode = False   ActiveSheet.Range("A1").Select End Sub 先日、上記のコードを回答者の方から教えてもらい、とても助かっていますが sheet1のD5に「不要」という文字が入っていた場合、 sheet3への貼り付け(23~30行目の作業)をキャンセルして、最後にsheet1のA1を選択するようにはどの様にしたらいいでしょうか?

  • VBA beforeprintについて

    Private Sub Workbook_BeforePrint(Cancel As Boolean) If ActiveSheet.Name = "sheet1" Then If Range("M1").Value = "" Then Cancel = True MsgBox ("名前を入力してください") Range("M1").Select Exit Sub End If ElseIf ActiveSheet.Name = "sheet2" Then If Range("A47").Value = 文字 Then Cancel = True    MsgBox ("日付を入力してください") Range("A47").Select Exit Sub End If Exit Sub End If End Sub 上記は印刷をする前に実行されるコードですが、上記を実行して印刷をした後に自動で下記のVBAを実行したいのですが Sub データー取り込み() ActiveSheet.Range("B2000:Z2000").Copy ChDir "\\データーA\データーB\データーC\データーD" Workbooks.Open Filename:="\\データーA\データーB\データーC\データーD\データーシート1.xls" Sheets("顧客データー").Select If Worksheets("顧客データー").Range("B18").Value = "" Then Worksheets("顧客データー").Range("B18").PasteSpecial Paste:=xlPasteValues Else Worksheets("顧客データー").Range("B65536").End(xlUp).Offset(1, 0).PasteSpecial _ Paste:=xlPasteValues End If ActiveWorkbook.Save ActiveWindow.Close End Sub 上記のコードと下記のコードをどのように絡めたらいいのかわかりません。アドバイスお願いします。

  • VBAでエラーが出たらメッセージを出す。

    VBAで関数の結果が"#N/A"だったらメッセージをだしたいののですが、うまくいきません。 初心者です。よろしくお願いします。 Private Sub CommandButton1_Click() '商品を検索する If Range("E8").Value = "#N/A" Then MsgBox "この商品サイズはありません!" Else MsgBox "商品あります。" End If End Sub セルE8には「=MATCH($D$1,データ!A:A,0)」が入力されています。 お願い致します。

  • VBA Do Until内で値の貼り付けができない

    Excel2003を使用しております。 コピー&値のペースト作業をやってくれるマクロを作成しております。 具体的には、名簿に公がついていれば、その3つ左の名前をD27へ値のみコピペし、 D27がすでに値があれば、D28に書くことを、D37までループするようにしております。 しかし困ったことに、Do Untilコードを使用しておりますが、このコードではなぜか値の貼り付けが出来なくなります。 Sub Ns公() Dim work As Range Set work = Selection If Selection.Value = "公" Then ActiveCell.Offset(0, -3).Select Selection.Copy Do Until Range("D37").Select Range("D27").Select If Selection.Value = "" Then Selection.PasteSpecial paste:=xlPasteValues work.Select Else ActiveCell.Offset(1).Select End If Loop If Range("D36").Value <> "" Then Do Until Range("I37").Select Range("I27").Select If Selection.Value = "" Then Selection.PasteSpecial paste:=xlPasteValues work.Select Else ActiveCell.Offset(1).Select End If Loop work.Select End If work.Select End If work.Select ActiveCell.Offset(1).Select End Sub 原因や対策をご教授いただけるとうれしいです。よろしくお願いします。

  • VBA 空白をエラー表示させる!

    ボタンをクリックすると、入力ミスがないように MsgBoxで表示させるものを作りましたが TextBox3を都合のため切り取りました! そしたら、エラー表示され If Controls("TextBox" & i).Text = "" Then ↑黄色く表示されます! どのように下の記述を変えれば良いか教えてください! Private Sub CommandButton5_Click() Dim i As Integer For i = 1 To 9 If Controls("TextBox" & i).Text = "" Then MsgBox "判定入力していない項目がありますよ!", vbInformation, "空欄を見て!" Exit Sub End If Next If MsgBox("記録するよ?", vbOKCancel) = vbOK Then With Worksheets("グラフ") 'アセスメント身体 .Range("U2").Value = TextBox1.Value .Range("U3").Value = TextBox2.Value .Range("U4").Value = TextBox3.Value .Range("U5").Value = TextBox4.Value .Range("U6").Value = TextBox5.Value .Range("U7").Value = TextBox6.Value .Range("U8").Value = TextBox7.Value .Range("U9").Value = TextBox8.Value .Range("U10").Value = TextBox9.Value

  • vba if構文 すべて答えが同じになってしまう

    現在vbaの勉強中です。 問題集通りに下記コードを設定しました。 a1に20以下の数値、例えば「5」を入力するも、 「成人です」の結果になってしまいます。 20より小さい場合は未成年ですの表記になるはずですが・・・。 Sub mondai() Sheets("Sheet3").Select Dim nenrei As Long nenrei = Range("a1").Value If nenrei > 20 Then  MsgBox "成人です" Else  MsgBox "未成年です" End If End Sub

    • ベストアンサー
    • XML
  • EXCELのVBAでのSelectとActivateの違い

    VBAの初心者です。 ExcelのVBAでメッセージを表示してシートを切換えるというのを作りたいのです。 見真似で作成したのが↓です。 Dim rtn As String rtn = MsgBox("シートを切換えますか", vbYesNo, "シートの切替") If rtn = vbYes Then Worksheets("送付先一覧").Activate Range("a1").Select Else Exit Sub End If 動作確認はできましたが、上記の「Activate」を「Select」に変更しても特に動作異常がありません。 そこで、疑問ですが、「Activate」と「Select」ってどうやって使い分けるのでしょうか?

  • excel vba ジャンプ

    excel2003のUserFormにてtextbox作成しました。 textbox1にページを入力すると指定のページにジャンプする コードを作成したのですが、動作的には目的とする事ができました。 ただ、初心者レベルで作成したので、コード記述が長く、 ページが増えるたびにコードを追記していかなければなりません。 下記に作成したコードを記述します。 もっと簡単に記述する方法はありますか? ---------------------------------------------------------- Private Sub TextBox1_Change() If TextBox1.Value = 1 Then ActiveWindow.ScrollRow = 1 ActiveWindow.ScrollColumn = 1 Range("$A$15").Select End If If TextBox1.Value = 2 Then ActiveWindow.ScrollRow = 38 ActiveWindow.ScrollColumn = 1 Range("$A$38").Select End If If TextBox1.Value = 3 Then ActiveWindow.ScrollRow = 69 ActiveWindow.ScrollColumn = 1 Range("$A$69").Select End If If TextBox1.Value = 4 Then ActiveWindow.ScrollRow = 100 ActiveWindow.ScrollColumn = 1 Range("$A$100").Select End If If TextBox1.Value = 5 Then ActiveWindow.ScrollRow = 131 ActiveWindow.ScrollColumn = 1 Range("$A$131").Select End If End Sub ---------------------------------------------------------- 上記記述で行っていることは、 textbox1に 1 と入力すると1ページ目が表示  キーボードでctrl+Homeの操作をした状態でカーソルがA15選択 textbox1に 2 と入力すると2ページ目が表示  表示の先頭が38行目、カーソルがA38選択 ページの行数が1ページ目だけ37行 2ページ目以降が31行ごとです。 実際は、200ページ以上あるのでなんとかしたいのですが・・・・

  • VBAの構文を作りましたが、うまくいきません。困った・・

    以下でVBAでつくりたいのです。 もし、○○株式会社なら 納品書シートのK3のセルを選ぶ その○○株式会社のなかでも○○センターの分なら 「NOなし」のメッセージと「○○セ)運賃出せ」のメッセージがでる もし、NOが入っていなかったら、納品書をしたまま印刷 NOが入っていたら、印刷なしで、売上日報表のシートへ戻る そこで私が手打ちでNOを消す作業をしたいと思います。 NOを手打ちで消したあと、手動で納品書シートに切り替えて納品書にある印刷ボタンをクリックして印刷(マクロボタンを納品書シートに作っています) ○○株式会社で○○センターの分でないなら、 NOが入っていたら、納品書の画面を表示したまま、印刷 NOが入っていなかったら、NO・確認のメッセージが出て、売上日報表シートへ戻る そこで、私が売上日報表に手打ちでNOを入れる作業をしたいと思います。 NOが入ったら、納品書シートを私が手動でクリックするので、納品書シートにある印刷のマクロボタンをまた押すと印刷 ○○株式会社でないなら、NOあるなしにかかわらず印刷   以上です。 ○○センターの分はNOが入っていたら印刷、NOが入っていなかったら、メッセージが出て、売上日報表に戻り、印刷されないようになってしまいます。その逆になってほしいのですが、難しいです。 どうすれば、うまくいくのでしょうか? 手打ちの部分は構文は要りません。 下記は構文です。 Public Sub msgbox○○会社() If Range("A5").Value = "○○会社" Then Worksheets("納品書").Range("k3").Select If Worksheets("納品書").Range("B17,B6") = "○○センター" Then MsgBox "NOなし" MsgBox "○○セ)運賃出せ" If Worksheets("納品書").Range("k3").Value < 0 Then '納品書画面を表示  Worksheets("納品書").Select Else Worksheets("納品書").Select   End If Else Worksheets("納品書").Select End If If Range("k3").Value > 0 Then ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _ :=True Else Worksheets("納品書").Select msgBox "NO" & vbCrLf & "確認" Worksheets("売上日報表").Select    End If    Else  ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1,     Copies:=1, Collate _ :=True   End If   End Sub 間違いはどこですか?

専門家に質問してみよう