Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

マウスやキーボードを使った記録式でマクロを作っています。
その中でシート上に散らばっている数十行の空白行を削除する行程が必要です。

しかし、マウスやキーに依るメニューでは「空白行の削除」と言うのが有りません。
VBEに直接打ち込まないといけない様です。
ステートメントが分かる方が要らしたら教えてください。

A 回答 (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を終了すれば、右クリックメニューは解除されます。
    • good
    • 1
この回答へのお礼

>ステートメントというのは別の意味です。

よく知らない言葉をすみません。

作って頂いたSub BlankRowsDelete()で旨くいきました。
さらにマウスのまで有り難うございます。
有効に使わせて頂きます。

説明がヘタだったようで、申し訳ありませんでした。
m(_ _)m

お礼日時:2005/04/19 00:40

こんばんは。


Wendy02さんの方法が一般的な方法だと思いますが、
もし、A列が空白の行を削除してもよければ、以下のコードでもOKです。

--------------------------------------------
Sub TestDelete()

 With Range("A1:A" & Range("A65536").End(xlUp).Row)

  .SpecialCells(xlCellTypeBlanks).EntireRow.Delete

 End With

End Sub
----------------------------------------------

以上です。
    • good
    • 3
この回答へのお礼

それぞれの方法をやってみていたので、返答が遅れて済みません。

やってみましたが、これでも合うみたいです。
有り難うございます。

お礼日時:2005/04/19 00:42

データのレイアウトがわかりませんが、もしも、ある列が空白の行は空白行として


みなしてよいのでしたら、その列全体を選択して、[Ctrl]を押しながら[G]を押し
ます。
ジャンプボックスが表示されますので、[セル選択]から「空白セル」を選択して
OKします。
空白セルがまとめて選択されますので、[編集]-[削除]の「行全体」を指定します。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/04/19 00:38

実際にご使用中のシートの状態が不明なのですが、もしかたしたら、この方法でいけるかもしれません。

うまくすると、マクロを作らなくても空白行を削除できますよ。

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

補足日時:2005/04/18 23:59
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報