ExcelのVBAについて。


With Range("B3:B" & Range("B65536").End(xlUp).Row)
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With

B列の使用範囲で、空白セルがあったら、その行を削除するというコードです。
空白セルがある場合はうまく動くのですが、
空白セルがない場合は「該当するセルがありません」というエラーが出てしまいます。

空白セルが"あれば"動作し、"なければ"なにも起こらないというコードにするにはどうしたらよいでしょうか?

回答の条件
  • 1人2回まで
  • 登録:2008/04/24 12:15:19
  • 終了:2008/04/24 13:02:10

ベストアンサー

id:guja No.1

guja回答回数40ベストアンサー獲得回数82008/04/24 12:47:12

ポイント60pt

SpecialCells(xlCellTypeBlanks) を実行した時点で該当するセルがなかった時点でどうしてもエラーが出てしまうので、

On Errorでエラーを無視してしまうのが一番簡単かと思います。


On Error Resume Next

.SpecialCells(xlCellTypeBlanks).EntireRow.Delete

On Error GoTo 0

id:tetlis

できました!

ありがとうございました。

2008/04/24 13:02:01

その他の回答(1件)

id:guja No.1

guja回答回数40ベストアンサー獲得回数82008/04/24 12:47:12ここでベストアンサー

ポイント60pt

SpecialCells(xlCellTypeBlanks) を実行した時点で該当するセルがなかった時点でどうしてもエラーが出てしまうので、

On Errorでエラーを無視してしまうのが一番簡単かと思います。


On Error Resume Next

.SpecialCells(xlCellTypeBlanks).EntireRow.Delete

On Error GoTo 0

id:tetlis

できました!

ありがとうございました。

2008/04/24 13:02:01
id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912008/04/24 12:54:46

ポイント10pt

下記のような感じでどうですか。

    Dim objRange As Range

    On Error Resume Next
    Set objRange=Range("B3:B" & Range("B65536").End(xlUp).Row).SpecialCells(xlCellTypeBlanks)
    On Error GoTo 0
    If Not objRange Is Nothing Then
        objRange.EntireRow.Delete
    End If

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません