- ベストアンサー
VBA 行の削除
全くの初心者で、初めて質問させていただきます。 A列には、数字・空白・文字を入力したセルが混在しています。 そのA列の数字の内 0 のセルが入力されている行のみを削除するVBAの記述の仕方を教えて下さい。 宜しく御願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#2です。(バグを修正しました) For 行 = 1 To 100 'nextまで行という変数を1から100まで変化させて繰り返します。 If Cells(行, 1) = "0" Then '0かどうかの判断をします。 Rows("" & 行 & ":" & 行 & "").Select 'その行を選択します。 Selection.Delete Shift:=xlUp 'その行を削除します。 行=行-1 '行を削除すると行数が減るのでそれに対応します。 End If Next
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
#1です。 補足に関して Sub test01() d = Range("A65536").End(xlUp).Row For i = d To 1 Step -1 If Cells(i, "A") = 0 And Cells(i, "A") <> "" Then Cells(i, "A").EntireRow.Delete End If Next i End Sub でどうですか。元でも文字、スペースは削除されないと思いますが、空白が削除されるので、改良しました。
お礼
考えていました通りの処理が完全に出来ました。 二度に渡りご指導頂き本当に有難う御座いました。 御礼申し上げます
- toshi_ho
- ベストアンサー率42% (71/168)
行数が100とすると、次のようになります。 For 行 = 1 To 100 If Cells(行, 1) = "0" Then Rows("" & 行 & ":" & 行 & "").Select Selection.Delete Shift:=xlUp End If Next
補足
ご回答有難う御座いました。 私の処理が悪いのかもしれませんが、何行か 0 の行が削除されませんでした。 構文の意味を解説していただければ、有りがたいのですが。
- imogasi
- ベストアンサー率27% (4737/17069)
標準モジュールに Sub test01() d = Range("A65536").End(xlUp).Row For i = d To 1 Step -1 If Cells(i, "A") = 0 Then Cells(i, "A").EntireRow.Delete End If Next i End Sub 下行から削除すること。
補足
ご回答有難う御座いました。 0 以外の文字・空白行も削除されてしまうのですが、私の処理が悪いのでしょうか。
お礼
考えておりました通りの完璧な処理が出来ました。 二度にわたり、ご指導頂き有難う御座いました。 又、構文の説明等、無理なお願い致しましたのに、素人に も解る説明をして頂き感謝申し上げます。 本当に有難う御座いました。