第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
同じテーマ「VBA入門」の記事
第127回.他のブックのマクロを実行(Runメソッド)
第128回.マクロをショートカットで起動(OnKeyメソッド)
第129回.レジストリの操作(SaveSetting,GetSetting,GetAllSettings,DeleteSetting)
第130回.テーブル操作の概要(ListObject)
第131回.テーブル操作のVBAコード(ListObject)
第132回.その他のExcel機能(グループ化、重複の削除、オートフィル等)
第133回.引数の数を可変にできるパラメーター配列(ParamArray)
第134回.Errオブジェクトとユーザー定義エラー
第135回.ジャンプの選択オプション(SpecialCells)
第136回.フォームコントロール
第136回.ActiveXコントロール
新着記事NEW ・・・新着記事一覧を見る
SQL関数と演算子|SQL入門(12月1日)
データの取得:集約集計、並べ替え(DISTINKT,GROUP BY,ORDER BY)|SQL入門(11月30日)
データの取得:条件指定(SELECT,WHERE)|SQL入門(11月29日)
データの挿入:バルクインサート|SQL入門(11月28日)
データの挿入(INSERT)と全削除|SQL入門(11月26日)
テーブル名変更と列追加(ALTER TABLE)とテーブル自動作成|SQL入門(11月25日)
テーブルの作成/削除(CREATE TABLE,DROP TABLE)|SQL入門(11月24日)
データベースに接続/切断|SQL入門(11月23日)
SQLiteのインストール|SQL入門(11月22日)
SQL入門:VBAでデータベースを使う|エクセルの神髄(11月22日)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.マクロって何?VBAって何?|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.ひらがな⇔カタカナの変換|エクセル基本操作
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。