VBAの空白行削除方法と書き方について

このQ&Aのポイント
  • VBAを使用してA列で空白セルを見つけ、その行全体を削除する方法を教えてください。
  • 以下のコードを使用して、A列で空白セルを見つけ、その行全体を削除することができます。 Sub DeleteRowsWithBlankCells(ByRef argRange As Range) On Error Resume Next argRange.SpecialCells(xlCellTypeBlanks).EntireRow.Delete On Error GoTo 0 End Sub Call DeleteRowsWithBlankCells(Range("A1:A10"))
  • 呼び出しの方法は、Call DeleteRowsWithBlankCells(Range("A1:A10"))となります。End Subの前にCall文を書く必要があります。Sub以降はそのままのコードですが、Call文を追加することで、指定した範囲のA列の空白セルが削除されます。
回答を見る
  • ベストアンサー

VBAの空白行削除について教えて下さい。

以下のサイトにでてくるA列で空白セルを探し出し、その行全体を削除する方法を利用したいです。 書いてあるコードなのですが、 http://veaba.keemoosoft.com/2012/12/376/ Sub DeleteRowsWithBlankCells(ByRef argRange As Range) On Error Resume Next argRange.SpecialCells(xlCellTypeBlanks).EntireRow.Delete On Error GoTo 0 End Sub と Call DeleteRowsWithBlankCells(Range("A1:A10")) はそれぞれどのように書けばいいのですか? End Subの前にCall DeleteRowsWithBlankCells(Range("A1:A10"))を書けばいいのですか? Callで呼び出してからSub以降ですか? Sub以降はそのままですか?どこか書き換えるのですか? Sub以降の書き方が今まで知っている書き方と違うのでよくわからなくなってしまいました。 宜しくお願い致します。

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

  • ベストアンサー
  • eden3616
  • ベストアンサー率65% (267/405)
回答No.1

何度も処理の中で削除する必要がある場合(他のプロシージャから読みだす)のであれば 以下のようにしてから、マクロ「呼び出し元」を実行してください。 Sub 呼び出し元() Call DeleteRowsWithBlankCells(Range("A1:A10")) End Sub Sub DeleteRowsWithBlankCells(ByRef argRange As Range) On Error Resume Next argRange.SpecialCells(xlCellTypeBlanks).EntireRow.Delete On Error GoTo 0 End Sub 一度きりの実行でいいのであれば、以下のようにして マクロ「DeleteRowsWithBlankCells」を実行してください。 Sub DeleteRowsWithBlankCells() On Error Resume Next Range("A1:A10").SpecialCells(xlCellTypeBlanks).EntireRow.Delete On Error GoTo 0 End Sub

関連するQ&A

  • EXCEL VBAで空白削除のマクロを作りましたが

    削除されません。 下記のとおりですが、どう考えても動きません、どなたか修正をお願いします。 初心者です。宜しくお願いします。 Sub Ksakujyo() Dim ObjRange As Range On Error Resume Next Set ObjRange = Application.InputBox("削除範囲を選択して下さい。", "印刷範囲", Type:=8) On Error GoTo 0 If ObjRange Is Nothing Then MsgBox "キャンセルされました。" End If If Selection.Count = 1 Then Exit Sub On Error Resume Next Selection.SpecialCells(xlCellTypeBlanks).Delete shift:=xlShiftUp Exit Sub End Sub

  • エクセル2010 VBA 行削除

    特定列が空白であれば行削除をしたいのですが、下記コードでうまく削除は出来るのですが、応答なしになったり、とても遅いのですが、もう少し早く処理出来る方法はありますか? E列が空白であれば行削除をしたいのですが・・ With Range("E13", Cells(Rows.Count, 5).End(xlUp)) .AutoFilter Field:=1, Criteria1:="" On Error Resume Next Set rng = .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible) If Err.Number = 0 Then rng.EntireRow.Delete On Error GoTo 0 .AutoFilter End With

  • 指定した範囲内が空白なら行削除するマクロ

    エクセルで指定した範囲内(A列からC列まで)で何も文字が入っていなければ(空白)、行を削除する、というマクロを教えてください。 いくつか調べて、以下を試しましたが、何も動作しませんでした。 どなたかアドバイスをいただければ助かります。 よろしくお願いします。 Sub DeleteBlankRows2() Application.ScreenUpdating = False On Error Resume Next With Columns("A:C") .SpecialCells(xlCellTypeConstants).EntireRow.Hidden = True .SpecialCells(xlCellTypeFormulas).EntireRow.Hidden = True .SpecialCells(xlCellTypeComments).EntireRow.Hidden = True .SpecialCells(xlCellTypeVisible).EntireRow.Delete .EntireRow.Hidden = False End With Application.ScreenUpdating = True End Sub

  • VBAでオートフィルタの可視セルクリア後空白行削除がうまくできません

    VBA初心者です。 オートフィルターで抽出した行を削除したくて、以下のように書いたのですが、最後の一文でエラーになってしまいます。 ◆エラー内容◆ 実行時エラー1004 重複する選択範囲に対してそのコマンドを使用することはできません。 ◆書いたVBA◆   Range("A2").Select Selection.AutoFilter Field:=1, Criteria1:="=1111", Operator:=xlAnd 'オートフィルターで「1111」を抽出 Dim r As Range Set r = Range(Range("A3"), Range("A" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible) r.ClearContents 'A列の可視セルの値をクリア Range("A2").Select Selection.AutoFilter 'オートフィルターの解除 r.SpecialCells(xlCellTypeBlanks).EntireRow.Delete 'A列が空白の行は削除→ ココがエラーになります --------------------------------------------------------- 元のファイル構成は2行目に項目名で、3行目からデータが入っています。 いろいろ調べたのですが、よくわからなかったので教えていただければ 幸いです。 宜しくお願いします。

  • エクセルVBAでワークシートのコメントを全部削除

    以下のコードを走らせると実行時エラー91[オブジェクト変数またはwithブロック変数が設定されていません]となってしまいます。 On Error Resume Nextで回避出来るのですが、理由がわかりません。On Error Resume Nextで回避しなくともいいようにするにはどう直せばいいのでしょうか? Sub Del_Comment() Dim MyR As Range, C As Range Set MyR = Cells.SpecialCells(xlCellTypeComments) For Each C In MyR C.Comment.Delete Next End Sub

  • エクセル マクロ(VBA) 空白&重複の削除

    データの空白と重複を削除(上詰め)し、10行目から並べる というマクロを書きたいです。 下記のマクロを実行すると、添付の緑色のセルのように、 なぜか空白の部分ができてしまいます。 緑色の空白を詰めるには、どのように書けばよいでしょうか。 さらに、Sheet2のデータを元にマクロを実行した時に、そのデータは 変更せずに、結果をSheet3に表示したいのですが、その方法を教えて下さい。 (現在のマクロだと、実行元のデータがある同じシート内で整列されます。) - Sub macro1() Dim i As Long On Error Resume Next For i = 1 To 10 With Columns(i) .SpecialCells(xlCellTypeBlanks).Delete shift:=xlShiftUp .RemoveDuplicates Columns:=1, Header:=xlNo End With Next i Range("1:9").Insert shift:=xlShiftDown End Sub -

  • マクロで不要な行を削除したい

    エクセル97を使っています。  日付 名前 品目 ・・・  1 2 3 ・ ・ といった表で、日付は2003/2/13という表示になっています。 そこで、今日以前(今日は含まない)の日付の行を削除してしまいたいのですが どうすればいいでしょうか? ちなみに、空白行を削除するのに、 Application.ScreenUpdating = False On Error Resume Next With Columns("E:F") .SpecialCells(xlCellTypeConstants).EntireRow.Hidden >=TODAY() .SpecialCells(xlCellTypeFormulas).EntireRow.Hidden >=TODAY() .SpecialCells(xlCellTypeComments).EntireRow.Hidden >=TODAY() .SpecialCells(xlCellTypeVisible).EntireRow.Delete .EntireRow.Hidden = False End With このような記述を使っています。 「今日」というとTODAY()関数ですよね。 でも、関数ってマクロに組み込めるのでしょうか? しかも「今日以前」という記述はどうすればいいのか? など考えると、わけがわからなくなりました。 今日以前の行を削除するマクロを教えてください。 ちなみに、日付の行では、曜日を追記する関数を使っております。 条件書式も3パターン使い切っております。 よって、マクロで行いたいです。 宜しくお願いします。

  • エクセルVBAで空白セルを削除する方法

    みなさん教えてください。 今エクセルVBAで、下記のようにのA列に空白セルがある場合にそのセルを削除し、 空白セルが無い場合何もしないと言うマクロを作っています(下記のように自動記録し ました)。 しかし、作成したマクロは、下記のようにA列に空白セルがない場合はエラーが出てし まいます。 空白セルが無い場合エラーが出ない方法を教えて頂けないでしょうか。 よろしくお願いします。 <マクロ> Sub Macro1() Columns("A:A").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Selection.SpecialCells(xlCellTypeBlanks).Select Application.CutCopyMode = False Selection.Delete Shift:=xlUp End Sub <データ> A --------- 1 2 1 1 1 3 4 ・ ・ ・ (以降約300行続きます)

  • Excel テーブル内の空白行の削除について

    テーブルの任意の行のデータを削除し、空白削除ボタン(cmd_Blank)をクリックすると削除したデータ行(空白行)を削除するVBAを作ったのですが空白行が1つの場合は問題なく動作するのですが(添付左)、 ・空白セルがあるとその行がすべて削除されてしまう(添付中央)。 ・空白行が2つ以上あるとエラーになってしまう(添付右) という問題に悩んでいます。 空白削除ボタンクリック時のコードは Private Sub cmdBlank_Click() ActiveSheet.ListObjects("T住所").DataBodyRange.SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub になります。 添付の図がわかりにくいかと思いますが、ボタンクリックすると テーブル内の空白行があったら、その行のみ削除され、上詰めに したいということです。 どなたか教えていただきたいです。

  • Excel 偶数番シートのA列が空白であるセル削除

    Excel の1つのファイル内の偶数番シートのA列が空白であるセルを行ごと削除したいのですが、下のコードではうまく動かないです。 シート番号はSheet(2)から(90)までです。 Sub 空白行削除() Dim i For i = 2 To 90 Step 2 Worksheets(i).Activate Columns("A:A").Select Selection.SpecialCells(xlCellTypeBlanks).Select Selection.EntireRow.Delete Next i End Sub

専門家に質問してみよう