![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.6ベストアンサー
- 回答日時:
No.2さんと同じ考えかたです。
A列をA1から見ていって、1の行を削除します。
Sub Sample()
Dim row As Long
row = 1
Do While Cells(row, 1).Value <> ""
If Cells(row, 1).Value = 1 Then
Cells(row, 1).EntireRow.Delete
row = row - 1
End If
row = row + 1
Loop
End Sub
No.8
- 回答日時:
>したから見に行くのはdo loopでできるのでしょうか?
Do Loopで
今開始行は何行目からか判らないので仮にnとすると
最終行を空欄で判断していると思いますが
それを最初に判断することが必要となりますよね。
これが仮にA列だとすると
Range("A10000").End(xlup).Row
で最終行が得られます。1万行超えてるデータはダメですよ。
普通はそんなに沢山入力しないと思って、手抜きですが。
ここから初めて行を今は一つずつ増やしていると
思いますが一つづつ減らす処理にします。
数字がnになって削除の処理が終わっているタイミングが
Loopを抜けるタイミングです。
Do またはLoopの行に記述するなら n-1に
なったらってことになりますね、多分。
No.7
- 回答日時:
こんばんは!
他の方々がおっしゃっているように、行の削除(挿入)は最終行から上に遡る方法が無難です。
その方法はすでに回答が出ていますので、一気に削除する方法です。
質問文ではどこの列が基準か判らないので、A列が空白の行を削除するコードにしてみました。
「ある条件」とは何かが判らないのでとりあえずA列の空白セルとしています。
Sub Sample1()
Dim i As Long, myRng As Range
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
If Cells(i, "A") = "" Then
If myRng Is Nothing Then
Set myRng = Cells(i, "A")
Else
Set myRng = Union(myRng, Cells(i, "A"))
End If
End If
Next i
If Not myRng Is Nothing Then
myRng.EntireRow.Delete
End If
End Sub
こんな感じでも大丈夫だと思います。m(_ _)m
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_16.png?5a7ff87)
No.5
- 回答日時:
どうしてもDoを使いたいなら
Dim CNT As Long
Dim END1 As Long
Dim Sh As Worksheet
Set Sh = ActiveSheet
END1 = Sh.Range("A65536").End(xlUp).Row
Do While CNT =< END1
If Sh.Range("A" & CNT).Value = 1 Then
Sh.Range(CNT & ":" & CNT).Delete
END1 = END1 - 1
CNT = CNT - 1
End If
Next CNT
Application.StatusBar = False
End Sub
なお、END1 = Sh.Range("A65536").End(xlUp).Rowは
65536行目から上に辿って、最初に見付かった空欄で無い行番号をEND1に格納する処理。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_16.png?5a7ff87)
No.4
- 回答日時:
最初の空欄までに数を見つけてDoループの終端数とする。
例えば、END1 = Sh.Range("A65536").End(xlUp).Row
でEND1が終端。
途中で削除した時、Doループの終端数とループ変数を-1する。
これで上手く行く。
下は例
Dim CNT As Long
Dim END1 As Long
Dim Sh As Worksheet
Set Sh = ActiveSheet
END1 = Sh.Range("A65536").End(xlUp).Row
For CNT = 2 To END1
If Sh.Range("A" & CNT).Value = 1 Then
Sh.Range(CNT & ":" & CNT).Delete
END1 = END1 - 1
CNT = CNT - 1
End If
Next CNT
Application.StatusBar = False
End Sub
No.3
- 回答日時:
こんにちは
削除を伴う処理の場合、ご質問のような問題が起きます。
削除したときは、その行数だけ対象行を戻すような処理をいれても良いのですが、ややこしいですね。
それなので、小さい行番号から大きい行番号へと処理をせずに、大きい行番号から小さい行番号へと降順に処理ををするのがコツと言えばコツです。
この方法ですと、ご質問のようなことはおきませんので、そのまま順に続けて処理を行えばよくなります。
(For ~ Next などで処理する場合も同様です)
No.2
- 回答日時:
一行ずつ 確認のため行を下げてるなら、その行のカウンターと言うか、変数が有るはず(ROW()の代わり)、作業した時だけ、その作業行
を -1 すれば良いだけじゃないのかな?お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) vba GetAsyncKeyState関数について 1 2023/08/24 12:08
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) Excel VBAについて、 フォルダ内のファイルを全て開きたい場合、 FSOを使えば、Dirは使わ 1 2023/01/27 13:18
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) 3つの条件を指定してVBAで行を削除したい 条件1:分類1が重複 条件2:分類2が重複 条件3:個数 6 2022/06/24 11:07
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
メルカリのメルカードで買い物...
-
EXCEL VBA マクロ 実行する度に...
-
switch の範囲指定
-
DoEventsがやはり分からない
-
【Excel】特定の文字を含むセル...
-
インタラクティブの反対語は?
-
FFTの結果ついて
-
VB.NET Excelを読み込んでDataT...
-
findは動くがfindnextがマクロ...
-
Access チェックボックスでチェ...
-
VB6,Ifから抜けるには?
-
読み方教えてください。
-
UMLでの例外処理
-
Arduino UNO のC言語
-
TextBoxに日付を自動的に入れる
-
月度は何て読みますか?
-
2重のDo~Loopは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
switch の範囲指定
-
メルカリのメルカードで買い物...
-
【Excel】特定の文字を含むセル...
-
DoEventsがやはり分からない
-
EXCEL VBA マクロ 実行する度に...
-
VBの質問#if 0 then ってどう...
-
Do~Loopした回数をカウントしたい
-
もしかして
-
UMLでの例外処理
-
findは動くがfindnextがマクロ...
-
インタラクティブの反対語は?
-
VBA SaveChanges 上書きされない
-
リョウ・・・量?料?
-
Loadイベント中にほかのイベン...
-
セルの値が0はクリアするマクロ
-
FFTの結果ついて
-
Select Case文でこのようなこと...
おすすめ情報
したから見に行くのはdo loopでできるのでしょうか?
基本空欄を見にいきますが、どういうりくつになりますか?
詳しく回答していただいた方ありがとうございます。やってみます!