VBA入門
ジャンプの選択オプション(SpecialCells)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
最終更新日:2021-11-12

第135回.ジャンプの選択オプション(SpecialCells)


数式の入っているセル、定数の入っているセル、条件付き書式の設定されているセル・・・
これらをシート全体やセル範囲の中から一括で取得する方法がマクロVBAにはあります。


手動でのジャンプ機能のセル選択をVBAで使うことができます。
マクロVBAでは、RangeオブジェクトのSpecialCellsメソッドがこの機能に該当します。


ジャンプの選択オプションとは

マクロVBAを覚えるうえでは、対応する手動操作とセットで覚えるようにすると理解が進みやすいものです。

ジャンプ→セル選択→選択オプション
この順に操作します。

まず、対象範囲のセルを選択しておきます。
シート全体を対象にする場合は、セルを1つだけ選択しておきます。
もちろんシート全体を選択しておいても良いです。
セル範囲(複数セル)を選択しておくと、その選択範囲に限定されます。
※ただし一部の選択オプションでは常に全セルが対象となります。

ジャンプのショートカットキーは、Ctrl+G

VBA マクロ SpecialCells

左下の「セル選択(S)

VBA マクロ SpecialCells

この画面でオプションボタンを選択し「OK」、オプション選択に該当するセルが選択されます。
この画面の中の、

・コメント
・定数
・数式
・空白セル
・最後のセル
・可視セル
・条件付き書式
・データの入力規則

これらで指定するセルを取得するものがSpecialCellsメソッドになります。

選択オプションのその他

以下についてはSpecialCellsメソッドではなく他のメソッドになります。
アクティブ セル領域のCurrentRegionとオブジェクト以外はVBAではあまり使いません。
VBAというより手動でもあまり使わないと思います。



選択オプション 対応するVBA
アクティブ セル領域 CurrentRegion
アクティブ セルの配列 CurrentArray
オブジェクト DrawingObjects
アクティブ行との相違 RowDifferences
アクティブ列との相違 ColumnDifferences
参照元 1レベル:DirectPrecedents
すべてのレベル:Precedents
参照先 1レベル:Dependents
すべてのレベル:DirectDependents

必要な時にはマクロ自動記録で確認しつつ使えばよいでしょう。


RangeオブジェクトのSpecialCellsメソッド

指定した種類と値に一致するすべてのセルを表すRangeオブジェクトを返します。

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 データの入力規則 - 同じ入力規則

画面と対応させて覚えましょう。

VBA マクロ SpecialCells

VBEでの入力時には、インテリセンスが有効となります。

マクロ VBA サンプル画像


XlSpecialCellsValue列挙



名前 説明
xlNumbers 1 数値
xlTextValues 2 文字
xlLogical 4 論理値
xlErrors 16 エラー値

画面と対応させて覚えましょう。

VBA マクロ SpecialCells

複数の値を加算して指定すると、複数の種類の定数や数式を指定できます。
数値と文字の場合は以下のように指定します。
xlNumbers + xlTextValues


SpecialCells使用時の注意点

SpecialCellsメソッドは、指定に一致するセルが存在しない場合はエラーとなります。
したがって、必ずOn Errorとともに使用するようにしてください。


SpecialCellsの使用例

以下、アクティブシートに対してのVBA記述としています。

エラー値となっている数式を消去

On Error Resume Next
Cells.SpecialCells(xlCellTypeFormulas, XlSpecialCellsValue.xlErrors).ClearContents


最後のセルを選択

Cells.SpecialCells(xlCellTypeLastCell).Select

この場合は必ず存在するのでエラーにはなりません。


数値定数と文字定数を選択

On Error Resume Next
Cells.SpecialCells(xlCellTypeConstants, xlNumbers + xlTextValues).Select

日付、時刻は数値とみなされます。


A1セルのセル領域の可視セルの定数を消去

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 ・・・新着記事一覧を見る

新旧マスタの差異比較|Power Query(M言語)入門(2023-02-28)
有効な最新単価の取得|Power Query(M言語)入門(2023-02-26)
有効な最新単価の取得|Power Query(M言語)入門(2023-02-21)
グルーブ内の最小・最大|Power Query(M言語)入門(2023-02-17)
2つのテーブルのマージ|Power Query(M言語)入門(2023-02-15)
「売上」が数値の行のみ取り込む|Power Query(M言語)入門(2023-02-13)
A列のヘッダー名を変更する|Power Query(M言語)入門(2023-02-11)
CSVのA列が日付の行だけを取り込む|Power Query(M言語)入門(2023-02-10)
列数不定のCSVの取り込み|Power Query(M言語)入門(2023-02-09)
別ブックの最終シートの取り込み|Power Query(M言語)入門(2023-02-08)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.マクロって何?VBAって何?|VBA入門
7.並べ替え(Sort)|VBA入門
8.Excelショートカットキー一覧|Excelリファレンス
9.エクセルVBAでのシート指定方法|VBA技術解説
10.Range以外の指定方法(Cells,Rows,Columns)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ