【エクセルVBA】セル形式を指定してジャンプ(SpecialCells)

投稿者: | 2021年7月10日
excelアイコン

エクセルバージョン

マイクロソフト365

 

本日はいろいろな形式のセルを指定してエクセルのジャンプ機能と一緒のことができる方法を解説していきたいと思います。

 

例えば

空白を削除したい…とか

数式が入ってるセルを一瞬で選択したい…とか

条件付き書式が適用されてるセルを知りたい…とか

色々あると思います!

 

VBAでこんな悩みが解決できる方法として、このような形式のセルを指定する方法がありますので、この機会に是非マスターしていってくださいネ(*^^)v

それではいってみましょう!

どんなことができるのか?

下記のジャンプ機能と一緒のことが実現できます\(^^)/

ジャンプ機能

 

この機能はエクセルを使いこなしている方なら1回くらいは使用したことがありますよね!

この機能をVBAで実行していきましょうということになります(*^^)v

 

SpecialCellsメソッド

指定した型と値に一致するRangeオブジェクトが返ります。

 

VBEを開きショートカットキーのF2でオブジェクトブラウザーを表示すると詳細が確認できます。

rangeオブジェクトSpecialCellsメソッド

Rangeオブジェクトのメンバーのメソッドであり、引数が2つで、Rangeが戻り値になります。

構文

Range.SpecialCells(Type , [Value])

TypeとValueの2つの引数があります。

[ ]は省略可です。

引数

SpecialCells必須/省略可 データ型詳細
Type(第1引数)必須XlCellTypeセルの形式を指定します。
Value(第2引数)省略可Variant

Type(第1引数)が下記の時に使用できます。

・xlCellTypeConstants
・xlCellTypeFormulas

Value(第2引数)のを加算して指定すると、複数の種類,定数,数式を指定できます。
Value(第2引数)の引数を省略した場合、すべての定数,数式が指定されます。

 

XlCellType(第1引数)とXlSpecialCellsValue(第2引数)

SpecialCells(Type , [Value])

(第1引数 Type)

下記XlCellType一覧から定数もしくは値を選択します。

定数セルの形式
xlCellTypeConstants2

定数セル
第2引数使用可

xlCellTypeBlanks4空白セル
xlCellTypeLastCell11使用セル範囲の最後のセル
xlCellTypeVisible12可視セル
xlCellTypeFormulas-4123数式セル
(数値,文字,論理値,エラー値)
第2引数使用可
xlCellTypeComments-4144コメントセル
xlCellTypeAllFormatConditions-4172条件付き書式のセル
xlCellTypeSameFormatConditions-4173同じ表示形式のセル
xlCellTypeAllValidation-4174条件の設定
xlCellTypeSameValidation-4175同じ条件設定のセル

(第2引数 Value)

下記XlSpecialCellsValue一覧から定数もしくは値を選択します。

定数種類
xlNumbers1数値
xlTextValues2文字
xlLogical4論理値
xlErrors16エラー値

 

VBAサンプル

数式が入力されているセルを選択

数式セル選択

第1引数 → xlCellTypeFormulas

 

数式(論理値)が入力されているセルを選択

数式セルの論理値選択

第1引数 → xlCellTypeFormulas

第2引数 → xlLogical

 

数式(数値)が入力されているセルを選択

数式の数値選択

第1引数 → xlCellTypeFormulas

第2引数 → xlNumbers

 

文字列が入力されているセルを選択

文字列のセル選択

第1引数 → xlCellTypeConstants

第2引数 → xlTextValues

 

空白セルを選択

空白セルを選択

第1引数 → xlCellTypeBlanks

VBAで複数の空白を削除する方法はこちら

 

まとめ

XlCellType(第1引数)を忘れた場合は、普通にジャンプ機能からマクロの記録をしても簡単にSpecialCellsメソッドが記述されるので、そういった方法で取得したあとに、VBAで編集してあげれば非常に有効な使用ができるかと思います(*゚▽゚)ノ

セルの範囲選択だけは慎重に行わないと意図しない動作になる場合があります。

以上です!

【関連事項】

【ジャンプ機能】複数の空白セルを瞬時に削除(ジャンプ機能)

【VBA】複数の空白セルの削除上詰めする方法(xlcelltypeblanksとDelete)

Excel目次