Home » ExcelVBA Rangeオブジェクト » SpecialCellsメソッド » SpecialCellsの対象をシート全体に

SpecialCellsの対象をシート全体に

動作検証バージョン:Windows版Excel(バージョン1821 ビルド11126.20266)

「Excel VBA SpecialCells シート全体」
といった検索キーワードでアクセスがありました。

Rangeオブジェクトに用意されているSpecialCellsメソッドで、引数で指定した条件に該当するセルを表すRangeオブジェクトを取得する際に、シート全体を対象にするには、どのようなコードを書けばいいのかを探していた方による検索です。

[スポンサードリンク]

シート全体からデータの入力されているセルを取得するサンプルマクロ

以下のSubプロシージャを実行すると、アクティブシート全体の中で、データの入力されているセルだけを選択できます。

Sub シート全体からデータの入力されているセルを取得選択する()
On Error GoTo ErrHandl

 Dim rng As Range
 Set rng = Cells.SpecialCells(xlCellTypeConstants)
 rng.Select

Exit Sub
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 » ExcelVBA Rangeオブジェクト » SpecialCellsメソッド » SpecialCellsの対象をシート全体に

「SpecialCellsメソッド」の記事一覧

検索


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

.