
(38) Range.SpecialCells メソッドを利用して、条件を満たす全てのセルを参照する!
1.「ジャンプ」ダイアログで [セル選択…] をクリック後、「選択オプション」ダイアログを表示
2. 条件を満たす全てのセルが選択されるが、SpecialCells メソッドを利用して VBA でも操作可能
「広告」
(38) Range.SpecialCells メソッドを利用して、条件を満たす全てのセルを参照する!
Excel メニューバーの [ヘルプ] - [更新プログラムのチェック] にて、適用されていないアップデートがあれば行ってください。
Excel 2016 for Mac 環境での説明となりますので、 Mac版 Excel 2011 では( VBA が利用できますが )同じ結果にならない場合があるかもしれません。
現状、 VBE 内で日本語を記述すると(貼り付けのみ可能な場合あり)乱れたり、保存時にクラッシュすることが多いため、 VBAコード は「未変換の英数字のみ」で記述してください。(テキストエディタからの貼り付けは可能)
前回使用した XLSM ファイルを、「マクロを有効」にして開きます。
今回も、「Sheet4」を用います。(VBAコードは、 Module1 の末尾に追加)
実行は、イミディエイトウィンドウにて
call Test_SpecialCells()
( [return] キーを押す必要あり)

'---------------------------------------- ' Test_SpecialCells() '---------------------------------------- Public Sub Test_SpecialCells()
Worksheets("Sheet4").Range("A1").SpecialCells(xlCellTypeBlanks).SelectMsgBox "Pause"
Worksheets("Sheet4").Range("A1").SpecialCells(xlCellTypeConstants, xlNumbers).SelectMsgBox "Pause"
Worksheets("Sheet4").Range("B3").SpecialCells(xlCellTypeLastCell).SelectEnd Sub
1.「ジャンプ」ダイアログで [セル選択…] をクリック後、「選択オプション」ダイアログを表示
まず、 [F5] あるいは、 [control] + [G] にて「ジャンプ」ダイアログを表示する。
上記「ジャンプ」ダイアログ左下の [セル選択…] ボタンをクリック。

上記画面のとおり、「選択オプション」ダイアログが表示される。
「アクテイブセル領域」を選択後に [OK] ボタンをクリックすると、以下の画面のとおり「指定したセルを含む CurrentRegion 範囲」が選択される。

2. 条件を満たす全てのセルが選択されるが、SpecialCells メソッドを利用して VBA でも操作可能

「アクティブセル領域」の選択は、 Worksheets("Sheet4").Range("B3").CurremtReigion.Select にて可。
一部、 Range.SpecialCells メソッドを利用すれば、条件を満たす全てのセル領域(Rangeオブジェクト)が返される。
aRange.SpecialCells ( type [, value ] )
- type …取得するセルの種類
- Value…引数 type に xlCellTypeConstants または xlCellTypeFormulas を設定した場合のみ、指定可。省略時は全ての項目が対象となる。
引数 type に指定する定数 | 内容 |
---|---|
xlCellTypeComments | 「コメント」が含まれているセル |
xlCellTypeConstants | 「定数」が含まれているセル |
xlCellTypeFormulas | 「数式」が含まれているセル |
xlCellTypeBlanks | 「空白」セル |
xlCellTypeLastCell | 使われたセル範囲内の「最後」のセル |
xlCellTypeVisible | 全ての「可視」セル |
xlCellTypeAllFormatConditions | 「条件付き書式」が設定されているセル |
xlCellTypeSameFormatConditions | 「同じ条件付き書式」が設定されているセル |
xlCellTypeAllValidation | 「入力規則」が設定されているセル |
xlCellTypeSameValidation | 「同じ入力規則」が設定されているセル |
引数 value に指定する定数 | 内容 |
---|---|
xlNumbers | 数値 |
xlTextValues | 文字 |
xlLogical | 論理値 |
xlErrors | エラー値 |
xlNumbers + xlTextValues | 数字 および 文字 |
以下が、今回のサンプルコードの実行結果だ。

「空白」選択時のコード。
Worksheets("Sheet4") にて、ワークシートオブジェクトを直指定している。
SpecialCells は Range オブジェクトのメソッドのため、結果に関係なくとも Range を経由する必要がある。
ごめんなさい。行ごと削除しても「C1」セルが「空白」扱いになりません。
理由がよくわかりません…

「定数」・「数式」選択時のみ、2つめの引数を指定する必要がある。
上記は、「数値」の定数を指定した場合。

「最後のセル」の場合、 Range("D12") 、 Range("B3") どちらを指定しても結果が変わらないことから 「UsedRange の最後のセル」を示すようだ。
次回も、セル参照に関して 説明します!
お疲れ様でした!
[command] + [Q] にてExcel を終了時、「作業中のブック」を保存するか確認のダイアログ画面が表示されるため 「保存」しましょう。
現状、 VBE 内で日本語を記述すると(貼り付けのみ可能な場合あり)乱れたり、保存時にクラッシュすることが多いため、 VBAコード は「未変換の英数字のみ」で記述してください。(テキストエディタからの貼り付けは可能)
「広告」
最後まで読んでいただき、ありがとうございます。ぜひ、右側の「人気ブログランキング」投票に ご協力ください。
また、お越しくださいませ。
// アタル
「広告」
コメント