ここから本文です

VBAについての質問です。よろしくお願いします。

かっちゃんさん

2013/6/617:28:04

VBAについての質問です。よろしくお願いします。

データの所々に生じる
空白行の削除が目的です。
ネットで調べた様に、
マクロの記録にて、
ジャンプ→空白セルの選択→行を削除
という順で記録をし、
いざ実行をすると、
データの右端の列の右隣、
空白の列も選択してしまい、
重複する選択範囲に対してそのコマンドは実行できません。
とエラーになってしまいます。
原因と、対処法を教えて頂けませんでしょうか?

Selection.EntireRow.Delete
この部分に問題があるようです。
よろしくお願いします。

閲覧数:
1,610
回答数:
2
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

ja7********さん

編集あり2013/6/704:35:54

> データの右端の列の右隣、空白の列も選択してしまい、
どの列の空白セルを対象としたいのか 判りませんが、
範囲を指定すれば いいかと思います。
> ジャンプ→空白セルの選択→行を削除という順で記録

そうするとSpecialCells(xlCellTypeBlanks) という範囲のコードが生成されます。
このSpecialCellsメソッドは、殆どエラー処理なくしては使い物になりません。
そのままでは、対象セルが無ければ実効エラーになります。

まぁ、使うすれば、こんな感じにすれば如何でしょうか。
ここでは、A列の空白セルを対象に行削除することにします。

Sub A列空白セル行削除1()
With Range("A1", Cells(Rows.Count, 1).End(xlUp))
    If Not .Cells.Find("", lookat:=xlWhole) Is Nothing Then
        .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    End If
End With
End Sub

'-----
SpecialCellsメソッドを使用しないで、通常通り下から空白を探して
行を削除する方法が、いいかと思います。 (A列の場合)

Sub A列空白セル行削除2()
Dim Rw As Long
Application.ScreenUpdating = False
For Rw = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
    With Cells(Rw, 1)
        If .Value = "" Then .EntireRow.Delete
    End With
Next
Application.ScreenUpdating = True
End Sub

質問した人からのコメント

2013/6/7 10:13:29

降参 お二方誠に有難うございました。
ja7awuさんの2つ目にて無事にクリア出来ました。
状況の説明が下手くそな中本当にありがとうございました。

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

tra********さん

編集あり2013/6/617:44:04

最初に基準にする列を選んで、
ジャンプ→空白セルの選択→行を削除
の操作を記録すればよいのでは?
録られたコードは

Columns("A:A").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete

これで、A列の空白部分の行全体が削除されます。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる