あるデータシートのB列に変数と同じものがあったらその行を削除したいです。
ところが下のようなFor文だと、行を削除した後にFor文の行番号が動いてしまうので、削除できないデータが残ってしまいます。
(1,2行目が削除対象行の場合、1行目を削除した時点で2行目が1行目のところにくるのでFor文から外れる)
ループ文をネストさせたりいろいろやってみましたが
上手くいきません。
なにか良い方法は無いでしょうか?
’ラスト行はデータが入っている最後の行
For Each Myrange In シート名.Range("b6:b" & ラスト行)
If Myrange.Value = 変数 Then
nowrow = Myrange.Row
シート名.Rows(nowrow).Delete
End If
Next
No.3ベストアンサー
- 回答日時:
Myrangeをオブジェクト変数にして、上から操作しているのに難があると思います。
こんな感じで如何でしょうか。
Dim nowrow As Long
For nowrow = ラスト行 To 6 Step -1
If Worksheets("シート名").Range("B" & nowrow).Value = 変数 Then
Worksheets("シート名").Rows(nowrow).Delete
End If
Next
No.4
- 回答日時:
>baseにrange("b6")のValueが入っちゃって、…
>range形式の変数がよくわかってません。
Dim base As Range
Set base = Range("B6")
の様にas Rangeで宣言して
Setで代入(?)します。
baseの処は、別にrange("B6")と直打ちしても別にいいですよ。後から変更するときに面倒になるので、変数にしているだけです。
例えば
base.Offset(i).Value
は、
range("B6").Offset(i).Value
と書いても同じです。
No.2
- 回答日時:
最初に最終行位置を求めて最終行から処理すればいいです。
このOKWebでも結構同じ処理のサンプルがあると思います。上から処理する場合、データに空白がないということが判っている場合(つまり空白のデータが来たら終了する場合)には、
例えば、次の様にもできると思います。
Dim base As Range
Dim i
Set base = Range("B6")
i = 0
Do While (base.Offset(i).Value <> "")
Do While (base.Offset(i).Value = 変数)
Rows(base.Offset(i).Row).Delete Shift:=xlUp
Loop
i = i + 1
Loop
ナルホド。最終行からが定石なんですねー
これをコピーして試したところ、
baseにrange("b6")のValueが入っちゃって、
offsetが上手く動かなかったです。
すみません。range形式の変数がよくわかってません。
参考になりました。有難うございました。
No.1
- 回答日時:
行の頭から行くからそうなるのです。
行削除は最終行からUPするのが通常です。
多忙のため,参考URLだけで失礼します。
参考URL:http://members.ld.infoseek.co.jp/nkworks03/Excel …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Visual Basic(VBA) VBA 行削除した連番 4 2023/06/27 16:00
- Excel(エクセル) マクロで行を追加、削除すると行位置がずれますが、解決方法はありませんか?。 5 2022/05/28 16:03
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
【関数】先頭だけにある、半角...
-
エクセル 白黒印刷で白線を印刷...
-
Excelのチェックボックスの使い...
-
【関数】適切な文字数の数字を...
-
Excelのpivotについて質問です
-
Excel ピボットテーブルで日付...
-
LOOKUP関数を使えばいいのでし...
-
エクセル関数を教えてください
-
エクセルのセルに同じ大きさの...
-
UNIQUE関数が使えないバージョ...
-
excelの不要な行の削除ができな...
-
エクセルで「-0.0」と表示さ...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの関数について教えて...
-
Aというブックの1というシート...
-
【マクロ】シート名を取得する...
-
VBA Private Sub Worksheet_Cha...
-
VBA、Excelのworkbook.open に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定した箇所がずれる
-
10base-Tと100base-Tの違い?
-
Yシャツ等の名称や、その他分か...
-
ジャニーズ 当選後に姓の変更
-
ライブの先着受付でどうゆうこ...
-
Adobe Express(アドビエクスプ...
-
スマートフォンの短期解約につ...
-
クレジットカードの分割払い
-
訪問に来る勧誘にどんな風に断...
-
教えてください。 ローソンチケ...
-
ドスパラで75万円のパソコンを...
-
振り込まれる予定のお金の確認方法
-
ドスパラのパソコンに於けるロ...
-
アップルウォッチの予約をした...
-
JCBカードwで分割払いにしたい...
-
7万円の給付金の件ですけどコ...
-
大阪医専AO入試について 救急救...
-
振込みのときって、振り込んだ...
-
実質年率と分割払い手数料の違い
-
あるミュージシャンのライブが...
おすすめ情報