エクセルバージョン
マイクロソフト365
本日はいろいろな形式のセルを指定してエクセルのジャンプ機能と一緒のことができる方法を解説していきたいと思います。
例えば
空白を削除したい…とか
数式が入ってるセルを一瞬で選択したい…とか
条件付き書式が適用されてるセルを知りたい…とか
色々あると思います!
VBAでこんな悩みが解決できる方法として、このような形式のセルを指定する方法がありますので、この機会に是非マスターしていってくださいネ(*^^)v
それではいってみましょう!
Menu
どんなことができるのか?
下記のジャンプ機能と一緒のことが実現できます\(^^)/
この機能はエクセルを使いこなしている方なら1回くらいは使用したことがありますよね!
この機能をVBAで実行していきましょうということになります(*^^)v
SpecialCellsメソッド
指定した型と値に一致するRangeオブジェクトが返ります。
VBEを開きショートカットキーのF2でオブジェクトブラウザーを表示すると詳細が確認できます。
Rangeオブジェクトのメンバーのメソッドであり、引数が2つで、Rangeが戻り値になります。
構文
Range.SpecialCells(Type , [Value])
TypeとValueの2つの引数があります。
[ ]は省略可です。
引数
SpecialCells | 必須/省略可 | データ型 | 詳細 |
Type(第1引数) | 必須 | XlCellType | セルの形式を指定します。 |
Value(第2引数) | 省略可 | Variant | Type(第1引数)が下記の時に使用できます。 ・xlCellTypeConstants ※Value(第2引数)の値を加算して指定すると、複数の種類,定数,数式を指定できます。 |
XlCellType(第1引数)とXlSpecialCellsValue(第2引数)
SpecialCells(Type , [Value])
(第1引数 Type)
下記XlCellType一覧から定数もしくは値を選択します。
定数 | 値 | セルの形式 |
xlCellTypeConstants | 2 | 定数セル |
xlCellTypeBlanks | 4 | 空白セル |
xlCellTypeLastCell | 11 | 使用セル範囲の最後のセル |
xlCellTypeVisible | 12 | 可視セル |
xlCellTypeFormulas | -4123 | 数式セル (数値,文字,論理値,エラー値) 第2引数使用可 |
xlCellTypeComments | -4144 | コメントセル |
xlCellTypeAllFormatConditions | -4172 | 条件付き書式のセル |
xlCellTypeSameFormatConditions | -4173 | 同じ表示形式のセル |
xlCellTypeAllValidation | -4174 | 条件の設定 |
xlCellTypeSameValidation | -4175 | 同じ条件設定のセル |
(第2引数 Value)
下記XlSpecialCellsValue一覧から定数もしくは値を選択します。
定数 | 値 | 種類 |
xlNumbers | 1 | 数値 |
xlTextValues | 2 | 文字 |
xlLogical | 4 | 論理値 |
xlErrors | 16 | エラー値 |
VBAサンプル
数式が入力されているセルを選択
1 2 3 4 5 | Sub 数式セルを選択() ActiveCell.CurrentRegion.SpecialCells(xlCellTypeFormulas).Select End Sub |
第1引数 → xlCellTypeFormulas
数式(論理値)が入力されているセルを選択
1 2 3 4 5 | Sub 数式セルの論理値を選択() ActiveCell.CurrentRegion.SpecialCells(xlCellTypeFormulas, xlLogical).Select End Sub |
第1引数 → xlCellTypeFormulas
第2引数 → xlLogical
数式(数値)が入力されているセルを選択
1 2 3 4 5 | Sub 数式セルの数値を選択() ActiveCell.CurrentRegion.SpecialCells(xlCellTypeFormulas, xlNumbers).Select End Sub |
第1引数 → xlCellTypeFormulas
第2引数 → xlNumbers
文字列が入力されているセルを選択
1 2 3 4 5 | Sub 文字列のセルを選択() ActiveCell.CurrentRegion.SpecialCells(xlCellTypeConstants, xlTextValues).Select End Sub |
第1引数 → xlCellTypeConstants
第2引数 → xlTextValues
空白セルを選択
1 2 3 4 5 | Sub 空白セルを選択() Range("A1").CurrentRegion.SpecialCells(xlCellTypeBlanks).Select End Sub |
第1引数 → xlCellTypeBlanks
VBAで複数の空白を削除する方法はこちら
まとめ
XlCellType(第1引数)を忘れた場合は、普通にジャンプ機能からマクロの記録をしても簡単にSpecialCellsメソッドが記述されるので、そういった方法で取得したあとに、VBAで編集してあげれば非常に有効な使用ができるかと思います(*゚▽゚)ノ
セルの範囲選択だけは慎重に行わないと意図しない動作になる場合があります。
以上です!
【関連事項】
【VBA】複数の空白セルの削除上詰めする方法(xlcelltypeblanksとDelete)