あるデータシートの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.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.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.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ランキング
-
【Officer360?Officer365?の...
-
勤怠表について ABS、TEXT関数...
-
Excelで4択問題を作成したい
-
エクセル
-
エクセルの関数について
-
エクセルの表で作業してます。 ...
-
グループごとの個数をカウント...
-
エクセルの複雑なシフト表から...
-
エクセルについて
-
エクセルシートの見出しの文字...
-
エクセル GROUPBY関数について...
-
【マクロ】実行時エラー '424':...
-
Excelに貼ったXのURLのリンク...
-
Amazonでマイクロソフトオフィ...
-
グループごとの人数のカウント
-
【マクロ】変数に入れるコード...
-
UNIQUE関数の代用
-
ページが変なふうに切れる
-
空白のはずがSUBTOTAL関数でカ...
-
グループごとの人数のカウント
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定した箇所がずれる
-
10base-Tと100base-Tの違い?
-
Excel 行削除ループさせたい
-
10base間でギガ単位ファイルの...
-
knoppix
-
LANの100base,1000base接続
-
EXCELのマクロ :再帰的...
-
安倍昭恵とチャウセスク夫婦と...
-
Norton Antivirusで・・・
-
アメリカ英語で「二塁打」は何...
-
80万の中古車を分割払いで買う...
-
ジャニーズ 当選後に姓の変更
-
振込みのときって、振り込んだ...
-
ドスパラのパソコンに於けるロ...
-
JCBカードwで分割払いにしたい...
-
一生に一度のお願いだから・・・
-
トラベラーズチェックの有効期...
-
ユニバーサルスタジオで半日楽...
-
年会費無料のクレジットカード...
-
7万円の給付金の件ですけどコ...
おすすめ情報
