• ベストアンサー

Excelで空白行を削除するマクロは?

マウスやキーボードを使った記録式でマクロを作っています。 その中でシート上に散らばっている数十行の空白行を削除する行程が必要です。 しかし、マウスやキーに依るメニューでは「空白行の削除」と言うのが有りません。 VBEに直接打ち込まないといけない様です。 ステートメントが分かる方が要らしたら教えてください。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

VBAの質問としてお受けします。 >ステートメントが分かる方が要らしたら教えてください まず、最初に、VBAでは、ステートメントというのは別の意味です。 >しかし、マウスやキーに依るメニューでは「空白行の削除」と言うのが有りません。 マウスのメニューに加えるということでしょうか? 以下は、その行の全てのセルが空白の場合にのみ、削除されます。 '標準モジュールへ Sub BlankRowsDelete()  Dim Rng As Range  Dim i As Long  Set Rng = Selection '最初にマウスで範囲を選択  For i = Rng.Rows.Count To 1 Step -1   With Rng.Cells(i, 1)    If Application.CountA(.EntireRow) = 0 Then     .EntireRow.Delete    End If   End With  Next i End Sub '標準モジュールか、ThisWorkbook へ Sub MouseRightClickMenuAdd() On Error Resume Next  Application.CommandBars("CELL").Controls("ブランク行削除").Delete On Error GoTo 0  With Application.CommandBars("CELL").Controls.Add _  (Type:=msoControlButton, Temporary:=True)  .BeginGroup = True  .Caption = "ブランク行削除"  .OnAction = "BlankRowsDelete"  End With End Sub 'ThisWorkbookへ Private Sub Workbook_Open() Call MouseRightClickMenuAdd End Sub なお、右クリックメニューでトラブルがあった時は、  Application.CommandBars("CELL").Reset を実行してください。通常、Excelを終了すれば、右クリックメニューは解除されます。

popuran121
質問者

お礼

>ステートメントというのは別の意味です。 よく知らない言葉をすみません。 作って頂いたSub BlankRowsDelete()で旨くいきました。 さらにマウスのまで有り難うございます。 有効に使わせて頂きます。 説明がヘタだったようで、申し訳ありませんでした。 m(_ _)m

その他の回答 (3)

  • taocat
  • ベストアンサー率61% (191/310)
回答No.4

こんばんは。 Wendy02さんの方法が一般的な方法だと思いますが、 もし、A列が空白の行を削除してもよければ、以下のコードでもOKです。 -------------------------------------------- Sub TestDelete()  With Range("A1:A" & Range("A65536").End(xlUp).Row)   .SpecialCells(xlCellTypeBlanks).EntireRow.Delete  End With End Sub ---------------------------------------------- 以上です。

popuran121
質問者

お礼

それぞれの方法をやってみていたので、返答が遅れて済みません。 やってみましたが、これでも合うみたいです。 有り難うございます。

回答No.2

データのレイアウトがわかりませんが、もしも、ある列が空白の行は空白行として みなしてよいのでしたら、その列全体を選択して、[Ctrl]を押しながら[G]を押し ます。 ジャンプボックスが表示されますので、[セル選択]から「空白セル」を選択して OKします。 空白セルがまとめて選択されますので、[編集]-[削除]の「行全体」を指定します。

popuran121
質問者

お礼

この方法でやれば、操作を記憶させるマクロで出来ました。 有り難うございます。

  • TK01
  • ベストアンサー率43% (43/100)
回答No.1

実際にご使用中のシートの状態が不明なのですが、もしかたしたら、この方法でいけるかもしれません。うまくすると、マクロを作らなくても空白行を削除できますよ。 1.A列に空白列を追加する 2.A列の1行目から最終行まで、連番を振る(1, 2, 3…) 3.データの入っている列をキーとして、データの並べ替えをする。すると、空白行がソートされてひとまとまりになります。 4.空白行を消す 5.今度はA列をキーとして、データの並べかえをする。するともとの順に戻ります。空白行だけ抜けている状態です。 6.A列を削除する。 以上です。

popuran121
質問者

補足

毎日処理しなければならないBook(実際に処理するのはその内決まった一枚のシートだけ)が何十か出てきます。 元のシートはA列のみ100行から400行位です。 これをセル内文字列の一定のところでB列C列に分割したり、A列の品番に応じてD列に記号を入れたりとか色々加工します。 セルに入っている文字や数値はシートごとに違いますが、作業のルールは一定で、毎回同じ作業の繰り返しなので、マクロのボタン一発でやろうと思っているんです。 空白行の削除についてですが。 手作業で一枚づつやる場合はオートフィルターで空白行だけ抽出し削除できます。 しかし、この作業は人が目で見てソートされた複数の行を選択する作業が入っているので、マクロで自動的にやることが出来ません。 空白行はシートによって29行だったり51行だったりマチマチです。 それで空白行を削除できるマクロは?と思った訳です。 説明の仕方が良くないかも知れませんが。 m(_ _)m

関連するQ&A