- ベストアンサー
Excelで空白行を削除するマクロは?
マウスやキーボードを使った記録式でマクロを作っています。 その中でシート上に散らばっている数十行の空白行を削除する行程が必要です。 しかし、マウスやキーに依るメニューでは「空白行の削除」と言うのが有りません。 VBEに直接打ち込まないといけない様です。 ステートメントが分かる方が要らしたら教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
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を終了すれば、右クリックメニューは解除されます。
その他の回答 (3)
- taocat
- ベストアンサー率61% (191/310)
こんばんは。 Wendy02さんの方法が一般的な方法だと思いますが、 もし、A列が空白の行を削除してもよければ、以下のコードでもOKです。 -------------------------------------------- Sub TestDelete() With Range("A1:A" & Range("A65536").End(xlUp).Row) .SpecialCells(xlCellTypeBlanks).EntireRow.Delete End With End Sub ---------------------------------------------- 以上です。
お礼
それぞれの方法をやってみていたので、返答が遅れて済みません。 やってみましたが、これでも合うみたいです。 有り難うございます。
- misatoanna
- ベストアンサー率58% (528/896)
データのレイアウトがわかりませんが、もしも、ある列が空白の行は空白行として みなしてよいのでしたら、その列全体を選択して、[Ctrl]を押しながら[G]を押し ます。 ジャンプボックスが表示されますので、[セル選択]から「空白セル」を選択して OKします。 空白セルがまとめて選択されますので、[編集]-[削除]の「行全体」を指定します。
お礼
この方法でやれば、操作を記憶させるマクロで出来ました。 有り難うございます。
- TK01
- ベストアンサー率43% (43/100)
実際にご使用中のシートの状態が不明なのですが、もしかたしたら、この方法でいけるかもしれません。うまくすると、マクロを作らなくても空白行を削除できますよ。 1.A列に空白列を追加する 2.A列の1行目から最終行まで、連番を振る(1, 2, 3…) 3.データの入っている列をキーとして、データの並べ替えをする。すると、空白行がソートされてひとまとまりになります。 4.空白行を消す 5.今度はA列をキーとして、データの並べかえをする。するともとの順に戻ります。空白行だけ抜けている状態です。 6.A列を削除する。 以上です。
補足
毎日処理しなければならないBook(実際に処理するのはその内決まった一枚のシートだけ)が何十か出てきます。 元のシートはA列のみ100行から400行位です。 これをセル内文字列の一定のところでB列C列に分割したり、A列の品番に応じてD列に記号を入れたりとか色々加工します。 セルに入っている文字や数値はシートごとに違いますが、作業のルールは一定で、毎回同じ作業の繰り返しなので、マクロのボタン一発でやろうと思っているんです。 空白行の削除についてですが。 手作業で一枚づつやる場合はオートフィルターで空白行だけ抽出し削除できます。 しかし、この作業は人が目で見てソートされた複数の行を選択する作業が入っているので、マクロで自動的にやることが出来ません。 空白行はシートによって29行だったり51行だったりマチマチです。 それで空白行を削除できるマクロは?と思った訳です。 説明の仕方が良くないかも知れませんが。 m(_ _)m
お礼
>ステートメントというのは別の意味です。 よく知らない言葉をすみません。 作って頂いたSub BlankRowsDelete()で旨くいきました。 さらにマウスのまで有り難うございます。 有効に使わせて頂きます。 説明がヘタだったようで、申し訳ありませんでした。 m(_ _)m