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

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

第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入門」の記事

第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.ひらがな⇔カタカナの変換|エクセル基本操作



  • >
  • >
  • >
  • ジャンプの選択オプション(SpecialCells)

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


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



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