Excel VBA 質問スレッド №2091 (解決済)
2回目の行削除時に不具合
投稿者 : チョッパー 投稿日時 : 2025/03/04(Tue) 12:37:44 OS : 未指定 EXCEL : 未指定
転記元からコピーし、転記先へ貼り付け、不要な行を削除するマクロを作成しました。(下記マクロが作成したものです。貼り付け1.2.3.4.5マクロは転記元、貼り付け先の行列番号が変わるだけで内容は同じです)
一回目のマクロ実行は思っている通りに処理されるのですが、転記元を修正し、修正した内容を再転記したい場合に、同じマクロを実行すると
シートの先頭行や他の必要な行も消えて2行だけ内容が残ったシートになってしまいます。
確認できたのは「貼り付け先シートのB列空白行削除」マクロ前までは正常に貼り付けられていました。
「貼り付け先シートのB列空白行削除」を連続マクロから外し、単独で「貼り付け先シートのB列空白行削除」を実行した場合は、正常なシートができあがります。
二回目以降の連続マクロの「貼り付け先シートのB列空白行削除」でなにか問題が起きているようなのですが、ご教授いただけないでしょうか。
お願い申し上げます。
転記元からコピーし、転記先へ貼り付け、不要な行を削除するマクロを作成しました。(下記マクロが作成したものです。貼り付け1.2.3.4.5マクロは転記元、貼り付け先の行列番号が変わるだけで内容は同じです)
一回目のマクロ実行は思っている通りに処理されるのですが、転記元を修正し、修正した内容を再転記したい場合に、同じマクロを実行すると
シートの先頭行や他の必要な行も消えて2行だけ内容が残ったシートになってしまいます。
確認できたのは「貼り付け先シートのB列空白行削除」マクロ前までは正常に貼り付けられていました。
「貼り付け先シートのB列空白行削除」を連続マクロから外し、単独で「貼り付け先シートのB列空白行削除」を実行した場合は、正常なシートができあがります。
二回目以降の連続マクロの「貼り付け先シートのB列空白行削除」でなにか問題が起きているようなのですが、ご教授いただけないでしょうか。
お願い申し上げます。
Sub 連続macro() Application.ScreenUpdating = False Sheets("貼り付け先").Visible = xlSheetVisible Sheets("貼り付け先").Range("A2:Z1000").ClearContents Call 貼り付け1 Call 貼り付け2 Call 貼り付け3 Call 貼り付け4 Call 貼り付け5 Call 貼り付け先シートのB列空白行削除 Application.CutCopyMode = False Application.ScreenUpdating = True End Sub Sub 貼り付け1() Dim ws1 As Worksheet Dim ws2 As Worksheet Dim lastRow As Long Set ws1 = ThisWorkbook.Sheets("転記元") Set ws2 = ThisWorkbook.Sheets("貼り付け先") lastRow = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).row ws1.Range("A7:A" & lastRow).Copy ws2.Range("A2").PasteSpecial Paste:=xlPasteValues End Sub Sub 貼り付け先シートのB列空白行削除() Dim ws As Worksheet Dim lastRow As Long Dim i As Long Set ws = ThisWorkbook.Sheets("貼り付け先") lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).row For i = lastRow To 2 Step -1 If Cells(i, "B").Value = "" Then ws.Rows(i).Delete End If Next i End Sub
スポンサーリンク
[返信 1] Re : 2回目の行削除時に不具合
投稿者 : さんこう 投稿日時 : 2025/03/04(Tue) 13:15:35
ここ↓で、シートが指定されていないのが怪しいように思いますが、2回目とか関係ないので外しているかもしれません。
>If Cells(i, "B").Value = "" Then
ここ↓で、シートが指定されていないのが怪しいように思いますが、2回目とか関係ないので外しているかもしれません。
>If Cells(i, "B").Value = "" Then
[返信 2] Re : 2回目の行削除時に不具合
投稿者 : ピロリ 投稿日時 : 2025/03/05(Wed) 06:11:37
[返信 1] さんこうさんの仰る通り、私も 50step目のシート指定していない影響かと思いますが・・・
1回目は「貼り付け先」シートを表示してたけど、2回目は「貼り付け先」以外のシートを表示してた(ActiveSheetが違う)とか。
外していたら、ご免なさい。
下は余計なお世話かもですが、少し気になりましたので・・・
① Sub 貼り付けxx() で lastRow を取得してますが、lastRow < 7 になるってことは無いですか?
つまり、7行目以下が空っぽってこと。 上の方の変なデータをコピペしちゃいますけど。
② Sub 貼り付け先シートのB列空白行削除() の処理範囲は、B列の最終行で大丈夫ですか?
例えば、A列の最終行が20行目で B列の最終行が19行目(20行目が空白)の場合に、20行目は削除不要かってこと。
問題無ければ読み捨てて下さい。
[返信 1] さんこうさんの仰る通り、私も 50step目のシート指定していない影響かと思いますが・・・
1回目は「貼り付け先」シートを表示してたけど、2回目は「貼り付け先」以外のシートを表示してた(ActiveSheetが違う)とか。
外していたら、ご免なさい。
下は余計なお世話かもですが、少し気になりましたので・・・
① Sub 貼り付けxx() で lastRow を取得してますが、lastRow < 7 になるってことは無いですか?
つまり、7行目以下が空っぽってこと。 上の方の変なデータをコピペしちゃいますけど。
② Sub 貼り付け先シートのB列空白行削除() の処理範囲は、B列の最終行で大丈夫ですか?
例えば、A列の最終行が20行目で B列の最終行が19行目(20行目が空白)の場合に、20行目は削除不要かってこと。
問題無ければ読み捨てて下さい。
[返信 3] Re : 2回目の行削除時に不具合
投稿者 : さぁーささん 投稿日時 : 2025/03/07(Fri) 03:35:57
ws.Cells(i, "B").Value = ""
ws.Cells(i, "B").Value = ""
[返信 4] Re : 2回目の行削除時に不具合
投稿者 : ちょびひげ 投稿日時 : 2025/03/09(Sun) 23:54:59
あ
あ
[返信 5] Re : 2回目の行削除時に不具合
投稿者 : チョッパー 投稿日時 : 2025/03/12(Wed) 17:27:03
ご連絡遅くなりました。
>If Cells(i, "B").Value = "" Then
でシート指定することで解決しました。
みなさんありがとうございました。
ご連絡遅くなりました。
>If Cells(i, "B").Value = "" Then
でシート指定することで解決しました。
みなさんありがとうございました。
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2025-07-05 18:40:53 )