第135回.ジャンプの選択オプション(SpecialCells)
数式の入っているセル、定数の入っているセル、条件付き書式の設定されているセル、
これらをシート全体やセル範囲の中から一括で取得する方法がマクロVBAにはあります。
マクロVBAでは、RangeオブジェクトのSpecialCellsメソッドがこの機能に該当します。
ジャンプの選択オプションとは
この順に操作します。
シート全体を対象にする場合は、セルを1つだけ選択しておきます。
もちろんシート全体を選択しておいても良いです。
セル範囲(複数セル)を選択しておくと、その選択範囲に限定されます。


この画面の中の、
・コメント
・定数
・数式
・空白セル
・最後のセル
・可視セル
・条件付き書式
・データの入力規則
これらで指定するセルを取得するものがSpecialCellsメソッドになります。
アクティブ セル領域のCurrentRegionとオブジェクト以外はVBAではあまり使いません。
VBAというより手動でもあまり使わないと思います。
選択オプション | 対応するVBA |
アクティブ セル領域 | CurrentRegion |
アクティブ セルの配列 | CurrentArray |
オブジェクト | DrawingObjects |
アクティブ行との相違 | RowDifferences |
アクティブ列との相違 | ColumnDifferences |
参照元 | 1レベル:DirectPrecedents すべてのレベル:Precedents |
参照先 | 1レベル:Dependents すべてのレベル:DirectDependents |
必要な時にはマクロ自動記録で確認しつつ使えばよいでしょう。
RangeオブジェクトのSpecialCellsメソッド
Rangeオブジェクト.SpecialCells(Type, Value)
名前 | 必須/オプション | データ型 | 説明 |
Type | 必須 | XlCellType | 取得するセルの種類を指定します。 |
Value | 省略可能 | バリアント型 (Variant) | 引数TypeがXlcelltypeconstantsまたはxlcelltypeexpressionの場合、 この引数にXlSpecialCellsValue列挙を使用して、結果に含めるセルの種類を決定します。 複数の値を加算して指定すると、複数の種類の定数や数式を指定できます。 この引数を省略すると、すべての定数および数式が対象になります。 |
XlCellType列挙
名前 | 説明 |
xlcelltypecomments | コメント |
xlcelltypeconstants | 定数、Valueオプションが指定できます。 |
xlcelltypeformulas | 数式、Valueオプションが指定できます。 |
xlcelltypeblanks | 空白セル |
xlcelltypelastcell | 最後のセル |
xlcelltypevisible | 可視セル |
xlcelltypeallformatconditions | 条件付き書式 - すべて |
xlcelltypesameformatcondition | 条件付き書式 - 同じ入力規則 |
xlcelltypeallvalidation | データの入力規則 - すべて |
xlcelltypesamevalidation | データの入力規則 - 同じ入力規則 |
画面と対応させて覚えましょう。


名前 | 値 | 説明 |
xlNumbers | 1 | 数値 |
xlTextValues | 2 | 文字 |
xlLogical | 4 | 論理値 |
xlErrors | 16 | エラー値 |
画面と対応させて覚えましょう。

数値と文字の場合は以下のように指定します。
xlNumbers + xlTextValues
したがって、必ずOn Errorとともに使用するようにしてください。
SpecialCellsの使用例
On Error Resume Next
Cells.SpecialCells(xlCellTypeFormulas, XlSpecialCellsValue.xlErrors).ClearContents
Cells.SpecialCells(xlCellTypeLastCell).Select
この場合は必ず存在するのでエラーにはなりません。
On Error Resume Next
Cells.SpecialCells(xlCellTypeConstants, xlNumbers + xlTextValues).Select
日付、時刻は数値とみなされます。
Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants).ClearContents
CurrentRegionもSpecialCellsも戻り値はRangeオブジェクトなので、続けてRangeオブジェクトのメソッドを記述することができます。
同じテーマ「マクロVBA入門」の記事
第98回.Findメソッド(Find,FindNext,FindPrevious)
第99回.Replaceメソッド(置換)
第132回.その他のExcel機能(グループ化、重複の削除、オートフィル等)
第135回.ジャンプの選択オプション(SpecialCells)
第141回.行・列の表示・非表示・列幅・行高
第105回.Callステートメント
第106回.Functionプロシージャー
第107回.プロシージャーの引数
第108回.変数の適用範囲(スコープ,Private,Public)
第100回.InputBoxメソッド(インプットボックス)
第101回.Midステートメント
新着記事NEW ・・・新着記事一覧を見る
VBA100本ノック 79本目:Wordにセル範囲を図として挿入|VBA練習問題(2月1日)
VBA100本ノック 78本目:グラフのデータ範囲拡張|VBA練習問題(1月30日)
VBA100本ノック 77本目:シート挿入イベント|VBA練習問題(1月29日)
VBA100本ノック 76本目:ボタンの表示名の位置へ移動|VBA練習問題(1月27日)
VBA100本ノック 75本目:ログインフォームの作成|VBA練習問題(1月26日)
VBA100本ノック 74本目:1シート複数表をDB形式に変換|VBA練習問題(1月25日)
VBA100本ノック 73本目:新規ブックにボタン作成しマクロ登録|VBA練習問題(1月23日)
VBA100本ノック 72本目:ITをDXに変換(文字列操作)|VBA練習問題(1月22日)
VBA100本ノック 71本目:パワーポイントへグラフを貼り付け|VBA練習問題(1月20日)
VBA100本ノック 70本目:ステータスバーに1秒ごとに時刻が表示|VBA練習問題(1月19日)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
10.マクロはどこに書くの(VBEの起動)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。