記事キャッチ画像
 (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] キーを押す必要あり)

55


'----------------------------------------
'    Test_SpecialCells()
'----------------------------------------
Public Sub Test_SpecialCells()

    Worksheets("Sheet4").Range("A1").SpecialCells(xlCellTypeBlanks).Select
    MsgBox "Pause"

    Worksheets("Sheet4").Range("A1").SpecialCells(xlCellTypeConstants, xlNumbers).Select
    MsgBox "Pause"

    Worksheets("Sheet4").Range("B3").SpecialCells(xlCellTypeLastCell).Select

End Sub


 1.「ジャンプ」ダイアログで [セル選択…] をクリック後、「選択オプション」ダイアログを表示 

まず、 [F5] あるいは、 [control] + [G] にて「ジャンプ」ダイアログを表示する。
10

上記「ジャンプ」ダイアログ左下の [セル選択…] ボタンをクリック。

55

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

22


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

31

「アクティブセル領域」の選択は、 Worksheets("Sheet4").Range("B3").CurremtReigion.Select にて可。
一部、 Range.SpecialCells メソッドを利用すれば、条件を満たす全てのセル領域(Rangeオブジェクト)が返される。

aRange.SpecialCells ( type [, value ] )
  • type …取得するセルの種類
  • Value…引数 typexlCellTypeConstants または xlCellTypeFormulas を設定した場合のみ、指定可。省略時は全ての項目が対象となる。

引数 type に指定する定数内容
xlCellTypeComments「コメント」が含まれているセル
xlCellTypeConstants「定数」が含まれているセル
xlCellTypeFormulas「数式」が含まれているセル
xlCellTypeBlanks「空白」セル
xlCellTypeLastCell使われたセル範囲内の「最後」のセル
xlCellTypeVisible全ての「可視」セル
xlCellTypeAllFormatConditions「条件付き書式」が設定されているセル
xlCellTypeSameFormatConditions「同じ条件付き書式」が設定されているセル
xlCellTypeAllValidation「入力規則」が設定されているセル
xlCellTypeSameValidation「同じ入力規則」が設定されているセル


引数 value に指定する定数内容
xlNumbers数値
xlTextValues文字
xlLogical論理値
xlErrorsエラー値
xlNumbers + xlTextValues数字 および 文字


以下が、今回のサンプルコードの実行結果だ。

31

「空白」選択時のコード。
Worksheets("Sheet4") にて、ワークシートオブジェクトを直指定している。
SpecialCells は Range オブジェクトのメソッドのため、結果に関係なくとも Range を経由する必要がある。

ごめんなさい。行ごと削除しても「C1」セルが「空白」扱いになりません。
理由がよくわかりません…

07

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

30

最後のセル」の場合、 Range("D12") 、 Range("B3") どちらを指定しても結果が変わらないことから 「UsedRange の最後のセル」を示すようだ。


次回も、セル参照に関して 説明します


お疲れ様でした!
[command] + [Q] にてExcel を終了時、「作業中のブック」を保存するか確認のダイアログ画面が表示されるため 「保存」しましょう。
現状、 VBE 内で日本語を記述すると(貼り付けのみ可能な場合あり)乱れたり、保存時にクラッシュすることが多いため、 VBAコード は「未変換の英数字のみ」で記述してください。(テキストエディタからの貼り付けは可能)



最後まで読んでいただき、ありがとうございます。
ぜひ、右側の「人気ブログランキング」投票に ご協力ください。
また、お越しくださいませ。
// アタル

  「広告」