対象のセル範囲の中で、TypeとValueで指定した条件を全て満たしているセルを参照します。これはマニュアル操作での「[編集」-[ジャンプ]-[セル選択]」に含まれる機能です。以下に定数一覧とともに表示されるダイアログを図示しますので、機能の対応を確認してみてください。
・表A 引数Typeで指定する定数一覧(XlCellTypeクラス)
定数 値 内容 Valueの指定
xlCellTypeAllFormatConditions -4172 すべての条件付き書式 ×
xlCellTypeAllValidation -4174 すべての入力規則 ×
xlCellTypeBlanks 4 空白セル ×
xlCellTypeComments -4144 コメント ×
xlCellTypeConstants 2 定数 ○
xlCellTypeFormulas -4123 数式 ○
xlCellTypeLastCell 11 最後のセル ×
xlCellTypeSameFormatConditions -4173 同じ条件付き書式 ×
xlCellTypeSameValidation -4175 同じ入力規則 ×
xlCellTypeVisible 12 可視セル ×
・表B 引数Valueで指定する定数一覧(XlSpecialCellsValueクラス)
定数 値 内容
xlErrors 16 エラー値
xlLogical 4 論理値
xlNumbers 1 数値
xlTextValues 2 文字
※Typeの指定がxlCellTypeConstantsクラスかxlCellTypeFormulasクラスの時だけ指定できます
構文 Object.SpecialCells(Type, Value)
設定項目 内容
Object Rangeオブジェクト
Type 参照するセルの種類を指定 (表A参照)[省略不可]
Value 特定の種類の定数や数式を含むセルだけを参照(表B参照)[省略可能]
次のサンプルは、ワークシート名「集計結果」の[データ]−[集計]により計算された集計結果だけを別のシートにコピーするサンプルです。
●サンプル1●
Sub SpecialCellsSamp1()
Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _
Destination:=Worksheets("集計結果").Range("A1")
End Sub
これを仮に、
Range("A1").CurrentRegion.Copy _
Destination:=Worksheets("集計結果").Range("A1")
とした場合、非表示になっている行も一緒にコピーされてしまいます。下記コードはサンプル2となります。
●サンプル2●
Sub SpecialCellsSamp2()
Range("A1").CurrentRegion.Copy _
Destination:=Worksheets("集計結果").Range("A1")
End Sub
●引数を組み合わせて使う方法
第2引数Valueは、複数の定数を組み合わせて使うことができます。その場合は、値を加算した結果を値として指定するか、定数同士を「+」演算子で加算させる式を記述します。
つまり、次の2つの結果は同じになります。
Value:=3
Value:=xlNumbers + xlTextValues