ねこになりたい

おふとんと朝の別れをするのが辛い人向けです。正論で殴らず見守ってあげてください。

SpecialCells

 

概要

 
Range("対象セル").SpecialCells(Type, [Value])
条件を指定してセルを参照することができる。
「Special(特別)なCellを参照する」と覚えればOK。

 

引数

Type

「どんな型(Type)に処理を適用するか?」を指定する。
If文の判定式のようなイメージ。
下記の例では、条件に当てはまるセル範囲のみ赤枠表示している。

 xlCellTypeBlanks  空白セル

f:id:Arpino:20200329112504p:plain

 xlCellTypeComments コメント入りのセル

f:id:Arpino:20200329112521p:plain

 xlCellTypeConstants 定数が含まれるセル
  (空白以外のすべて)この画像には alt 属性が指定されておらず、ファイル名は image-73.png です
 xlCellTypeFormulas 数式(Formulaフォーミュラ)が含まれるセルこの画像には alt 属性が指定されておらず、ファイル名は image-77.png です
 xlCellTypeLastCell 使用されている範囲内で最後のセル
 xlCellTypeVisible 可視(Visible)のセルこの画像には alt 属性が指定されておらず、ファイル名は image-85.png です
 xlCellTypeAllFormatConditions 条件付き書式が設定されたセルこの画像には alt 属性が指定されておらず、ファイル名は image-79.png です
 xlCellsTypeSameFormatConditions 同じ条件付き書式が設定されたセル
 xlCellsTypeAllValidation 入力規則が設定されたセルこの画像には alt 属性が指定されておらず、ファイル名は image-84.png です
 xlCellsTypeSameValidation 同じ入力規則が設定されたセル

Value

定数と数式の場合、より細かく条件が設定できる。
文字列と数値、演算結果と真偽値を分けたい場合に使う。

 xlNumbers  数値  ex) 1,12,123
 (私の環境では数値があってもエラーになります。何故じゃ。。。)
 xlTextValues  文字列

 ex) プリティにゃんこ、可愛いわんこ、様々なカルマを背負い続ける人類

この画像には alt 属性が指定されておらず、ファイル名は image-86.png です

 xlErrors  エラー値

  ex) #N/A, #Name?

この画像には alt 属性が指定されておらず、ファイル名は image-87.png です

 xlLogical  論理値

  ex) TRUE, FALSE

この画像には alt 属性が指定されておらず、ファイル名は image-88.png です

サンプル

H列の愚痴を消しちゃいましょう☆

この画像には alt 属性が指定されておらず、ファイル名は image-89.png です

 ' 範囲を指定する
Dim rng As range
Set rng = Range("H:H").SpecialCells(xlCellTypeConstants, _
xlTextValues)

' H列全て消す
rng.ClearContents

' 初期化
Set rng = Nothing

実行結果

綺麗さっぱり消える。
しかし、心の疲れは睡眠をバッチリとらない限り消せないのだ。

この画像には alt 属性が指定されておらず、ファイル名は image-90.png です

補足

SpecialCellsは文字列と数値を切り分けて参照している。
たとえば私たちも数値、文字列を選択して何らかの処理(コピーなど)をする場合は
以下のように操作することがある。

選択されたセルから上側を全選択 Alt +Shift +
選択されたセルから下側を全選択 Alt + Shift +
選択されたセルから左側を全選択 Alt + Shift +
選択されたセルから左側を全選択 Alt + Shift +

この「コピーなど何らかの処理をするために選択する」処理がSpecialCellsといえる。

落とし穴

指定した条件に当てはまるセルがない場合はエラーになる。
「定義したいセルがない→定義エラー」となるので、オブジェクト定義エラー扱い。

この画像には alt 属性が指定されておらず、ファイル名は image-83.png です