アプリ版:「スタンプのみでお礼する」機能のリリースについて

空白行の削除に、下記マクロを活用させていただいていますが、
見た目空白なのに削除されない行が時々残ってしまいます。

削除されなかったセルを「Deleteキー」で空白にするとマクロが
実行され、きちんと削除されます。

こういった、スペースか何かが入っていても、見た目空白なら
削除するようにはできないでしょうか。

どなたかよろしくお願いいたします。

Sub 削除()
Dim c As Range
Dim 開始行 As Long
Dim 最終行 As Long
開始行 = 5
最終行 = Range("a5000").End(xlUp).Row
For Each c In Range("a" & 開始行 & ":a" & 最終行)
If c.Value = "" Then
Rows(c.Row).Delete
End If
Next
End Sub

A 回答 (2件)

>スペースか何かが入っていても



sub macro1()
 dim s as long
 dim e as long
 dim r as long

 s = 5
 e = range("A65536").end(xlup).row

 for r = e to s step -1
  if application.trim(cells(r, "A")) = "" then
   cells(r, "A").entirerow.delete shift:=xlshiftup
  end if
 next r
end sub
    • good
    • 0
この回答へのお礼

早速のご教示ありがとうございました。
うまく削除できました。
早速、活用させていただきます。
また、よろしくお願いいたします。

お礼日時:2013/08/28 12:49

こんにちは!


おそらく・・・

>For Each c In Range("a" & 開始行 & ":a" & 最終行)

の部分でお望みの結果にならないと思います。
上の行から下に向かって操作を行いますので、行が削除されるたびにFor~Next が1行ずつずれますので
本来削除したい行を通り越して次の行の操作に入ってしまうのが原因と思われます。

↓のような感じにしてみてはどうでしょうか?

Sub 削除2()
Dim i As Long
Dim 開始行 As Long
Dim 最終行 As Long
開始行 = 5
最終行 = Range("a5000").End(xlUp).Row
For i = 最終行 To 開始行 Step -1
If Cells(i, "A").Value = "" Then
Rows(i).Delete
End If
Next
End Sub

※ 行の挿入・削除は最終行から上に向かっての操作にした方が間違いないと思います。m(_ _)m
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!