- ベストアンサー
VBAでデータがない場合にExitSubする方法
- VBAでデータがない場合にExitSubする方法について教えてください。
- 質問者は、データがない場合にExitSubしたいと考えています。
- 質問者は、VBAコードのどこにExitSubを記述すれば良いかわからないと述べています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 #2さんのおっしゃるように、下から削除するというのが一般的です。 なお、範囲が数値で数えられるものは、For i =1 ~ To ... Next のスタイルのほうが良いです。Do ~ Loopは、また、別の時に使います。 '// Sub DeleteRowsCount() Dim sVal As Variant Dim i As Long sVal = Worksheets("マスタ登録").Range("D5").Value If sVal = "" Then MsgBox "マスタ登録のデータがありません。", 48: Exit Sub Application.ScreenUpdating = False With Worksheets("リスト") If Application.CountIf(.Columns("E"), sVal) = 0 Then MsgBox sVal & "はありません。", 24: Exit Sub If MsgBox("データを削除します。よろしいですか?", vbYesNo) = vbNo Then Exit Sub For i = .Cells(Rows.Count, "E").End(xlUp).Row To 5 Step -1 If .Cells(i, "E").Value = sVal Then .Cells(i, "E").EntireRow.Delete End If Next i End With Application.ScreenUpdating = True End Sub
その他の回答 (2)
- mt2008
- ベストアンサー率52% (885/1701)
Sheets("リスト").Select の後にでも↓を入れてみて下さい。 If WorksheetFunction.CountIf(Range(Cells(5, 5), Cells(200, 5)), Sheets("マスタ登録").Range("D5")) = 0 Then Exit Sub でも、今のままのコードでは削除対象の行が連続していた場合、1つ目の行を削除したことで行がずれるので、2つ目の行は削除できませんよ。 行の削除は下から上に行いましょう
- FEX2053
- ベストアンサー率37% (7991/21373)
単純に「先頭セルがブランクかどうか」のチェックで良いんじゃ? Sheets("リスト").Select IF Cells(5, 5).Value = "" Then Exit Sub i = 5 これでいいと思いますけど・・・。