構文
Object.SpecialCells (Type, Value)
Type・・・取得するセルの種類を指定(後述の表を参照)
Value・・・取得するセルが定数もしくは数式の場合に、特定の抽出条件を指定(後述の表を参照)
戻り値 ・・・・・Boolean型 Object型ならTrue/Object型でなければFalse
Value・・・取得するセルが定数もしくは数式の場合に、特定の抽出条件を指定(後述の表を参照)
戻り値 ・・・・・Boolean型 Object型ならTrue/Object型でなければFalse
ある特定の条件に該当するセル(Cells , Range)をまとめて抽出したい場合は SpecialCells メソッドを使用します。
基本的に、引数Typeに下表の定数を抽出条件として、設定し使用します。
基本的に、引数Typeに下表の定数を抽出条件として、設定し使用します。
| 引数名 | 省略 | 定数/データ型 | 説明 |
| Type | 不可 | xlCellTypeAllFormatConditions | 表示形式が設定されているセル |
| xlCellTypeAllValidation | 条件の設定が含まれているセル | ||
| xlCellTypeBlanks | 空白セル | ||
| xlCellTypeComments | コメントが含まれているセル | ||
| xlCellTypeConstants | 定数が含まれているセル | ||
| xlCellTypeFormulas | 数式が含まれているセル | ||
| xlCellTypeLastCell | 使われたセル範囲内の最後のセル | ||
| xlCellTypeSameFormatConditions | 同じ表示形式が設定されているセル | ||
| xlCellTypeSameValidation | 同じ条件の設定が含まれているセル | ||
| xlCellTypeVisible | すべての可視セル | ||
| Value | 可 | Variant型 | Type に xlCellTypeConstants または xlCellTypeFormulas を設定した場合、 特定の種類の定数や数式を含むセルだけを取得できます。 省略すると、すべての定数および数式が対象になります。 |
SpecialCellsメソッドのサンプルコード
'■アクティブシートの数式セルのみロック状態にしてシートを保護する
Public Sub sample()
'■シート保護を解除、全セルのロックを解除する
ActiveSheet.Unprotect
ActiveSheet.Cells.Locked = False
'■数式が含まれているセルのみをロックする
On Error Resume Next
ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas).Locked = True
'上記条件に満たさない場合は下記エラーが発生します。その為、On Error Resume Nextとしましょう
'実行時エラー1004
'アプリケーション定義またはオブジェクト定義のエラーです。
'■シートを保護する
On Error GoTo 0
ActiveSheet.Protect
End Sub
注意点
- ObjectがRange(“A1”)のような単一セルの場合、SpecialCellsメソッドはシート全体のセルを対象に抽出を行うという仕様があるようです。
- Objectが動的なセル範囲となる場合、この仕様によりマクロ開発者が意図しない範囲のセルを抽出してしまう可能性があり、マクロの実装によっては、ユーザの大事なデータを削除してしまうことになってしまうかもしれません。
- Objectが動的なセル範囲となる場合は、Object.Count が 1 の場合は処理を行わないというような排他処理を実装した方が良いでしょう。
関連記事
セルをロックする【Lockedプロパティ】【ExcelVBA】



コメント