「Excel VBA SpecialCells シート全体」
といった検索キーワードでアクセスがありました。
Rangeオブジェクトに用意されているSpecialCellsメソッドで、引数で指定した条件に該当するセルを表すRangeオブジェクトを取得する際に、シート全体を対象にするには、どのようなコードを書けばいいのかを探していた方による検索です。
シート全体からデータの入力されているセルを取得するサンプルマクロ
以下のSubプロシージャを実行すると、アクティブシート全体の中で、データの入力されているセルだけを選択できます。
On Error GoTo ErrHandl
Dim rng As Range
Set rng = Cells.SpecialCells(xlCellTypeConstants)
rng.Select
ErrHandl:
MsgBox "該当セルがみつかりません。"
Err.Clear
End Sub
シート全体から、データの入力されているセルを取得するだけなら、
Dim rng As Range
Set rng = Cells.SpecialCells(xlCellTypeConstants)
でOKです。
Range.SpecialCellsのエラー処理
Range.SpecialCellsメソッドでは、該当するセルがないときに実行時エラーが発生するため、
On Error GoTo ErrHandl
ErrHandl:
MsgBox "該当セルがみつかりません。"
Err.Clear
と、定番のエラー処理を入れています。
Range.SpecialCellsはRangeオブジェクトを返す
データの入力されているセルを選択するだけなら、
Dim rng As Range
Set rng = Cells.SpecialCells(xlCellTypeConstants)
rng.Select
の部分を、
Cells.SpecialCells(xlCellTypeConstants).Select
と1行にして構いませんが、RangeオブジェクトのSpecialCellsメソッドが、見つかったセルを表すRangeオブジェクトを返すことを感じていただきたいので、あえて
Set rng = Cells.SpecialCells(xlCellTypeConstants)
と、Range型のオブジェクト変数に格納する処理を入れています。
Cells.SpecialCellsでシート全体を指定できる
シート全体を対象にするポイントは、「.SpecialCells」の前の、
Set rng = Cells.SpecialCells(xlCellTypeConstants)
Cellsです。
シート全体のセルを表すRangeオブジェクトを、Cellsプロパティで取得すれば、OKです。
どのセル範囲かを「.SpecialCells」の前で指定
シート全体に限らず、どのセル範囲から取得するかは、「.SpecialCells」の前、Rangeオブジェクトを取得するコード(オブジェクト式)で指定します。
例えば、
Range("A1:G7").SpecialCells(〇〇)
ならば、A1:G7セルが対象になり、
Rows(1).SpecialCells(〇〇)
なら、1行目全体が対象になり、
Columns(1).SpecialCells(〇〇)
なら、1列目全体が対象になります。
最終更新日時:2019-01-30 02:38
Home » Excel VBA Rangeオブジェクト » SpecialCellsメソッド » SpecialCellsの対象をシート全体に