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

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


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

Excel将棋:駒を動かす|VBAサンプル集(8月9日)
Excel将棋:将棋進行クラスの作成|VBAサンプル集(8月8日)
Excel将棋:将棋盤クラスの作成&単体テスト|VBAサンプル集(8月8日)
Excel将棋:位置クラスをデフォルトインスタンスに変更|VBAサンプル集(8月7日)
VBAで数値を漢数字に変換する方法|エクセル雑感(8月6日)
Excel将棋:駒台クラスの作成&単体テスト|VBAサンプル集(8月6日)
Excel将棋:駒クラスの単体テスト|VBAサンプル集(8月5日)
Excel将棋:駒クラスの作成|VBAサンプル集(8月5日)
Excel将棋:クラスの設計|VBAサンプル集(8月4日)
Excel将棋:マクロVBAの学習用|VBAサンプル集(8月3日)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
10.マクロはどこに書くの(VBEの起動)|VBA入門




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


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



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