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

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
公開日:2019-11-14 最終更新日: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)

・Findメソッド ・FindNext メソッド ・FindPrevioust メソッド ・Application.FindFormatメソッド ・FindメソッドとFindNextメソッドの実戦例
第99回.Replaceメソッド(置換)
・Replaceメソッド の構文 ・Replaceメソッドの注意点 ・Replaceメソッドの使用例 ・ReplaceメソッドとReplace関数の使い分け
第132回.その他のExcel機能(グループ化、重複の削除、オートフィル等)
・マクロの記録 ・グループ化 ・重複の削除 ・オートフィル ・連続データの作成 ・その他のExcel機能
第135回.ジャンプの選択オプション(SpecialCells)
第141回.行・列の表示・非表示・列幅・行高
・セルの非表示 ・行の表示・非表示 ・列の表示・非表示 ・セルが表示されているか(可視セルか)の判定方法 ・列幅・行高
第105回.Callステートメント
・Callステートメント ・Callステートメントの使用例 ・同じことは2度書かない ・プロシージャーの分割について
第106回.Functionプロシージャー
プログラム(マクロVBA)内で特定の処理を実行し値を返すプロシージャーです。これはつまり、Functionプロシージャーで独自の関数をつくれるということです。Subプロシージャーとの違いは、値を返すか返さないかの違いです。
第107回.プロシージャーの引数
・引数の構文 ・引数の使用例 ・引数について
第108回.変数の適用範囲(スコープ,Private,Public)
・プロシージャーレベル変数 ・・・ プロシージャー内でのみ使用可能 ・モジュールレベル変数 ・・・ モジュール内でのみ使用可能 ・パブリック変数 ・・・ 全てのモジュールの全てのプロシージャーで使用可能 ・変数の適用範囲について簡単にまとめてると ・定数(Const)の適用範囲について ・変数の重複について ・変数は、極力狭いスコープで使う事が望ましいとされます。
第100回.InputBoxメソッド(インプットボックス)
・InputBoxメソッド ・InputBoxメソッドの使用例 ・最後に
第101回.Midステートメント
・Midステートメント ・MidBステートメント ・Midステートメントの使用例 ・Midステートメントの必要性 ・実践での使用例


新着記事NEW ・・・新着記事一覧を見る

ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.ひらがな⇔カタカナの変換|エクセル基本操作
5.繰り返し処理(For Next)|VBA入門
6.変数宣言のDimとデータ型|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.Findメソッド(Find,FindNext,FindPrevious)|VBA入門




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


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


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