• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル VBAにて行削除をしたい…)

エクセルVBAで行削除する方法

このQ&Aのポイント
  • エクセル2003でVBAを使って行を削除する方法について教えてください。
  • A列に101から200までの番号が振られており、Z列に記入がない場合はその行を削除したいです。
  • 削除後にもA列の番号が自動的に変わると便利です。詳しい方、教えてください。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

VBAを使う必要があるのですか? Z列にオートフィルタをかけて、空白の行を抽出し、行をまとめて削除する方が簡単だと思います。(それをマクロ記録でVBAにする手もありますが…) A列の連番もA1に  =ROW()+100 を入力して下方向にコピーしておけば、途中行が削除されても連続した番号になりますから、わざわざVBAにする必要もありません ともかく行削除をVBAにするならこんな感じです。VBAで連番のふり直すコードは書きませんので、ご自身で考えてみてください Sub Macro1() Dim rng as Range  For Each rng in Range(Range("Z1"),Range("Z65536").End(xlUp))   If rng.Value = "" Then    rng.EntireRow.Delete   End If  Next rng End Sub もしくは Sub Macro2() Dim idx as Long  For idx = Range("Z65536").End(xlUp).Row To 1 Step -1   If Cells(idx, "Z").Value = "" Then    Cells(idx, "Z").EntireRow.Delete   End If  Next idx End Sub

prtcw794
質問者

お礼

回答ありがとうございます。 >A列の連番もA1に =ROW()+100を入力して下方向にコピーしておけば… これでOKです。ROWという関数を知りませんでした… >VBAを使う必要があるのですか?  すみせん説明してなかったのですが今使用しているものに行削除の機能を追加したかったのです。 もちろん教えてもらったVBAは機能するのですが、現在使用しているものに挿入するとためしてみたのですが、どこにいれても上手く機能しません。 コピーして他のブックに貼り付け、そのブックのほかのシートに値だけを貼り付けしてファイル名を付けて保存。そのブック自体は保存せずに閉じるというものです。 zを検索して行削除したものを保存したいのですが… 下記に記載してみますのでどこにどういれれば機能するか教えてもらってよろしいでしょうか??? 個人的には ………Paste:=xlPasteValues のあとくらいに教えてもらった構文を、Sub Macro1()とEnd Subをのぞいて挿入すればよさそうだと思い、試したのですがダメでした Sub 転記() If MsgBox("転記しますか?", vbYesNo) = vbNo Then Exit Sub Dim ws As Worksheet, wb As Workbook Set ws = ActiveSheet Set wb = Workbooks.Open(Filename:=ThisWorkbook.Path & "\ブック名.xls") ws.Range("A1:V68").Copy Destination:=Worksheets("Sheet1").Range("A1") Worksheets("Sheet4").Activate Range("A1:CJ42").Copy Range("A1").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False strName1 = Format(Range("C2").Value, "yyyy-mm-dd") ActiveWorkbook.SaveAs _ Filename:="C:\日報\" & strName1 & ".xls" ActiveWorkbook.Close SaveChanges:=False End Sub

prtcw794
質問者

補足

すみません!!! Sub Macro2()のほうでなんとかなりました!!! 希望に叶うものができたので締め切らしてもらいます。 ありがとうございました。

関連するQ&A