Home » ExcelVBA Rangeオブジェクト » SpecialCellsメソッド » 非表示行をまとめて削除するExcelマクロ

非表示行をまとめて削除するExcelマクロ

対象:Excel2003, Excel2007, Excel2010

「エクセル 非表示 行 一括削除 マクロ」
という検索が行われていました。

非表示の行をまとめて削除するExcelマクロを探している方による検索です。

[スポンサードリンク]

非表示の行を一括削除するサンプルマクロ

VBA(Visuala Basic for Applications)で、以下のようなマクロを作成してみました。


Sub 非表示行をまとめて削除する()
 Dim i As Long

 For i = Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
  If Rows(i).Hidden Then Rows(i).Delete
 Next i
End Sub

サンプルマクロの解説

いろいろな実装方法が考えられそうですが、ループ文の中でHiddenプロパティを調べて、非表示なら削除するというマクロにしてみました。

どの範囲をループで回すかですが、
  Cells.SpecialCells(xlCellTypeLastCell).Row
でセル範囲の最終行を取得しています。

RangeオブジェクトのSpecialCellsメソッドの引数に、定数xlCellTypeLastCellを指定することで、最後のセルを表すRangeオブジェクトを取得して、そのRowプロパティで、そのセルの行番号を取得しています。

取得できた最終行から1行目に向かって、下から上へループを回して
  For i = Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
もし非表示なら削除をしています。
   If Rows(i).Hidden Then Rows(i).Delete

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » SpecialCellsメソッド » 非表示行をまとめて削除するExcelマクロ

TrackBack:2

TrackBack URL
行の表示・非表示を切り替えるマクロ from インストラクターのネタ帳
対象:Excel2003, Excel2007, Excel2010 「excelで行の表示をon offにするvba」 という検索が行われていました。...
For~Nextループを逆順に後ろから前に回す from インストラクターのネタ帳
VBA(Visual Basic for Applications)で、For~Nextループを逆順に(後ろから前に)回すには「For i = a to ...
[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » SpecialCellsメソッド » 非表示行をまとめて削除するExcelマクロ

Copyright © インストラクターのネタ帳 All Rights Reserved.

.