5行空白列があったらそこで処理を終わりたいんですが、もっといい書き方はないでしょうか?
下記が私の考えた頭の悪いやり方です。
Sub macro()
Dim i As Integer
For i = 1 To 1000
If Cells(i, 1) = "" Then
If Cells(i + 1, 1) = "" Then
If Cells(i + 2, 1) = "" Then
If Cells(i + 3, 1) = "" Then
If Cells(i + 4, 1) = "" Then
If Cells(i + 5, 1) = "" Then
MsgBox (i - 1 & "行目で終わりです")
Exit For
End If
End If
End If
End If
End If
End If
Next
End Sub
No.2ベストアンサー
- 回答日時:
5行空白列があったらそこで処理を終わりたいんですね?
お書きになったのでは6行空白がないと終わらないような・・・・。
こんな書き方もあります。
Sub test01()
For i = 1 To 1000
If Application.WorksheetFunction.CountA(Range(Cells(i, 1), Cells(i + 4, 1))) = 0 Then
MsgBox (i - 1 & "行目で終わりです")
Exit For
End If
Next
End Sub
No.4
- 回答日時:
こんにちは。
#2 さん、ご指摘のように、
>5行空白列があったら
コードは、空白は6行という数になっていますね。私は、コードに従いました。
15行目が空白で、それから、20行目までが空白なら、6行空白という計算になります。
i =15, i+5 =20
Cells(i, 1) = "" Cells(i + 5, 1) = ""
------------------------------------------
Sub Test02()
Dim i As Long
Dim Rw1 As Long, Rw2 As Long
i = 1
If Cells(i, 1) <> "" Then Rw1 = Cells(i, 1).Row
Do
Rw2 = Cells(i, 1).End(xlDown).Row
'>6 は、6行以上
If Rw2 - Rw1 > 6 Or Rw2 > 1000 Then Exit Do
Rw1 = Rw2: i = Rw2
Loop
If Rw1 <> 0 Then
MsgBox Rw1 & "行目で終わりです。", 64
Else
MsgBox "最終行が見つかりませんでした。", 48
End If
End Sub
------------------------------------------
No.3
- 回答日時:
左辺の連続複数セルを指定して空白か聞くのは難しいですね
とりあえず
●<繰り返しループ法>で
Sub test01()
Dim rg As Range
i = 1
For Each rg In Range(Cells(i, "A"), Cells(i + 4, "A"))
If rg = "" Then
Else
MsgBox "処理"
End
End If
Next
MsgBox "終了"
End
End Sub
ーー
●<エクセル関数法>
エクセル関数を利用するのも良いかもしれない。
Sub test02()
i = 1
x = WorksheetFunction.CountBlank(Range(Cells(i, "A"), Cells(i + 4, "A")))
If x = 5 Then
MsgBox "終了"
End
Else
MsgBox "処理"
End
End If
End Sub
No.1
- 回答日時:
if文のところもFor Nextにすればスッキリすると思います。
後、判定も
for j = 5 to 0 step -1で
5行目から判定すれば効率がよいかもです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Wordの差し込み印刷で空白行が...
-
LINEのこの空白ってどんな意味...
-
Word ○(まる)で表示される空白
-
エクセルでフッターに空白を入れる
-
Excel計算式が入ってるセルを空...
-
「 - 」と「 _ 」 の違い
-
アクセスのクエリで空白を0と...
-
INDEXとMATCH関数で#N/Aが出る...
-
エクセルの表作成
-
latexで、行の先頭に空白を入れ...
-
マクロ 空白セルまで繰り返す
-
マクロで数値と数値の間に空白...
-
空白の行のことを
-
ちょっと特殊な連続印刷のマク...
-
エクセルマクロ、特定の日付を...
-
PowerPointの表内のカンマ
-
【VBA】PDF出力に任意のファイ...
-
エクセルでleft関数の結果が表...
-
EXCELでタイトル行と一番下の行...
-
EXCELで縦の行全てに一括して文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LINEのこの空白ってどんな意味...
-
Wordの差し込み印刷で空白行が...
-
INDEXとMATCH関数で#N/Aが出る...
-
Word ○(まる)で表示される空白
-
bashでの空白と空文字の判断
-
Excel計算式が入ってるセルを空...
-
エクセルでフッターに空白を入れる
-
空白行があると #DIV/0なる?...
-
「 - 」と「 _ 」 の違い
-
ちょっと特殊な連続印刷のマク...
-
latexで、行の先頭に空白を入れ...
-
Excel関数で90%から110%の間を◎...
-
エクセルで1つでも×か空白があ...
-
アクセスのクエリで空白を0と...
-
VBA ""が認識されないのはなぜ...
-
マクロ 空白セルまで繰り返す
-
仕事で使う数式を自分で作成で...
-
VBAでの配列について
-
ニックネームが無い!
-
メモ帳のスクロールバーを変更...
おすすめ情報