• ベストアンサー

VBA 行の削除

全くの初心者で、初めて質問させていただきます。 A列には、数字・空白・文字を入力したセルが混在しています。 そのA列の数字の内 0 のセルが入力されている行のみを削除するVBAの記述の仕方を教えて下さい。 宜しく御願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • toshi_ho
  • ベストアンサー率42% (71/168)
回答No.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

oguno
質問者

お礼

考えておりました通りの完璧な処理が出来ました。 二度にわたり、ご指導頂き有難う御座いました。 又、構文の説明等、無理なお願い致しましたのに、素人に も解る説明をして頂き感謝申し上げます。 本当に有難う御座いました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

#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 でどうですか。元でも文字、スペースは削除されないと思いますが、空白が削除されるので、改良しました。

oguno
質問者

お礼

考えていました通りの処理が完全に出来ました。 二度に渡りご指導頂き本当に有難う御座いました。 御礼申し上げます

  • toshi_ho
  • ベストアンサー率42% (71/168)
回答No.2

行数が100とすると、次のようになります。 For 行 = 1 To 100 If Cells(行, 1) = "0" Then Rows("" & 行 & ":" & 行 & "").Select Selection.Delete Shift:=xlUp End If Next

oguno
質問者

補足

ご回答有難う御座いました。 私の処理が悪いのかもしれませんが、何行か 0 の行が削除されませんでした。 構文の意味を解説していただければ、有りがたいのですが。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

標準モジュールに 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 下行から削除すること。

oguno
質問者

補足

ご回答有難う御座いました。 0 以外の文字・空白行も削除されてしまうのですが、私の処理が悪いのでしょうか。

関連するQ&A