「specialcells(xlcelltypeconstants, 23)」
「excel2003 vba xlcelltypeconstants, 23」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あることに気づきました。
RangeオブジェクトのSpecitalCellsメソッドについて、
調べていた方による検索キーワードです。
おそらくは、引数に指定されている「23」という数字が疑問だったのではないかと推測しています。
「specialcells(xlcelltypeconstants, 1).select」
といった検索をなさった方も同じようなことを調べていたはずです。
マクロ記録をしてみましょう
解説をいきなり読むよりは、まずはテストをしましょう。
アクティブなワークシート上のセルに、数値や文字などのデータを適当にいくつか入力しておいてから、定数を選択する操作を、マクロ記録してみてください。
定数を選択する操作をマクロ記録した場合
[選択オプション]ダイアログで「定数」オプションを選択して、「数値」「文字」「論理値」「エラー値」チェックボックスがOnのままで、
(データの種別は問わず)何らかのデータが入力されているセルだけを選択する操作を、まずはマクロ記録しましょう。
すると、
Selection.SpecialCells(xlCellTypeConstants, 23).Select
というコードが作られます。
「specialcells(xlcelltypeconstants, 23)」
「excel2003 vba xlcelltypeconstants, 23」
という検索をなさった方は、マクロ記録で作られるこのオブジェクト式をご覧になったのではないかと、私は想像しています。
数値・文字・論理値だけを選択する操作をマクロ記録した場合
続いて、
[選択オプション]ダイアログで、「定数」オプションを選択後に、「エラー値」チェックボックスだけをOffにして、「数値」「文字」「論理値」だけがOnの状態で、
データの入力されているセルだけを選択する操作をマクロ記録しましょう。
今度は、
Selection.SpecialCells(xlCellTypeConstants, 7).Select
というコードが自動的に作られるはずです。
SpecialCellsの第2引数が、先ほどは「23」でしたが、今回は「7」になっています。
SpecialCellsメソッドの第2引数はデータの種別を表す
RangeオブジェクトのSpecitalCellsメソッドの第2引数は、データの種別を表します。
[選択オプション]ダイアログで、
「定数」オプションを選択したあとに指定できる、
「数値」「文字」「論理値」「エラー値」には、
「1」 「2」 「4」 「16」という値が割り当てられていて、
「数値」「文字」「論理値」「エラー値」すべてが選択されていた場合、
「1 + 2 + 4 + 16」の「23」が第2引数に指定され、
「数値」「文字」「論理値」が選択されていた場合、
「1 + 2 + 4」の「7」が第2引数に指定されます。
「数値」「文字」が選択されていた状態でマクロ記録すると、
「1 + 2」の「3」が第2引数に指定されます。
「文字」だけが選択されていた状態でマクロ記録すると、
「2」が
「数値」だけが選択されていた状態でマクロ記録すると、
「1」が、第2引数に指定されます。
また、Range.SpecitalCellsメソッドの第2引数は、省略することができ、省略した場合には「23」が指定された場合と同じ動きになります。
自分で書くコードでは定数を使いましょう
マクロ記録をすると
.SpecialCells(xlCellTypeConstants, 23).Select
のように第2引数に数値が書かれてしまいますが、自分で書くコードでは定数を使いましょう。
Range.SpecialCellsメソッドの第2引数には、XlSpecialCellsValue列挙に定義されている、以下のような定数を指定できます。
定数 | 値 | 意味 |
---|---|---|
xlNumbers | 1 | 数値 |
xlTextValues | 2 | 文字 |
xlLogical | 4 | 論理値 |
xlErrors | 16 | エラー値 |
例えば、
数値の入力されているセルだけを選択したいのなら
.SpecialCells(xlCellTypeConstants, xlNumbers).Select
数値と文字の入力されているセルだけを選択したいのなら
.SpecialCells(xlCellTypeConstants, _
xlNumbers + xlTextValues).Select
といった定数を使ったコードにするほうが、
.SpecialCells(xlCellTypeConstants, 1).Select
.SpecialCells(xlCellTypeConstants, 3).Select
などのように数値が書かれているコードよりも、確実に可読性が上がります。
最終更新日時:2024-03-04 17:13
Home » Excel VBA Rangeオブジェクト » SpecialCellsメソッド » SpecialCells(xlCellTypeConstants, 23)とは?