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)
第99回.Replaceメソッド(置換)
第132回.その他のExcel機能(グループ化、重複の削除、オートフィル等)
第135回.ジャンプの選択オプション(SpecialCells)
第141回.行・列の表示・非表示・列幅・行高
第105回.Callステートメント
第106回.Functionプロシージャー
第107回.プロシージャーの引数
第108回.変数の適用範囲(スコープ,Private,Public)
第100回.InputBoxメソッド(インプットボックス)
第101回.Midステートメント


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

第5章:AI×VBAでつまづかない!トラブルシューティングとAIとの付き合い方 |生成AI活用研究(2025-05-20)
第4章:【事例で学ぶ】AIとVBAでExcel作業を劇的に効率化する! |生成AI活用研究(2025-05-20)
第3章:AIを「自分だけのVBA先生」にする!質問・相談の超実践テクニック|生成AI活用研究(2025-05-19)
第2章 VBAって怖くない!Excelを「言葉で動かす」(超入門)|生成AI活用研究(2025-05-18)
第1章:AIって一体何?あなたのExcel作業をどう変える?(AI超基本)|生成AI活用研究(2025-05-18)
AI時代のExcel革命:AI×VBAで“書かない自動化”超入門|生成AI活用研究(2025-05-17)
Geminiと100本ノック 23本目:シート構成の一致確認|生成AI活用研究(5月16日)
AIが問う出版の未来は淘汰か進化か:AIと書籍の共存の道とは|生成AI活用研究(2025-05-16)
Geminiと100本ノック 22本目:FizzBuzz発展問題|生成AI活用研究(5月15日)
すぐに使える!生成AI プロンプト作成 実践ガイド|生成AI活用研究(2025-05-15)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.ひらがな⇔カタカナの変換|エクセル基本操作
6.RangeとCellsの使い方|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.FILTER関数(範囲をフィルター処理)|エクセル入門
10.条件分岐(Select Case)|VBA入門




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


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



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