「エクセル マクロ xlTextValues」
といった検索キーワードで、時折アクセスがあります。
Dim rng As Range Set rng = Cells.SpecialCells(xlCellTypeConstants, xlTextValues)
あるいは、
Set rng = Cells.SpecialCells(xlCellTypeFormulas, xlTextValues)
といったコードを見かけた方による検索でしょう。
Excelのデータは4種類
そもそもExcelでは、データは4つに分類されています。
- 数値
- 文字列
- 論理値
- エラー値
の4種類です。
[選択オプション]ダイアログボックスの[定数]または[数式]を選択すると、[数値][文字][論理値][エラー値]チェックボックスを使って、
種類を指定してセルを選択できます。
これと同じようなの操作をVBAから行う際に利用するのが、XlSpecialCellsValue列挙型に定義されている定数です。
文字列セルだけを選択するサンプルマクロ
文字列の入力されているセルが存在するワークシートがアクティブな状態で以下のExcelマクロを実行すると、文字列の入力されているセルだけが選択されます。
On Error GoTo ErrHandl
Cells.SpecialCells(xlCellTypeConstants, xlTextValues).Select
Exit SubErrHandl:
MsgBox "文字列の入力されているセルは存在しないようです。"
Err.Clear
End Sub
[選択オプション]ダイアログボックスで、[定数]オプションを選択して[文字]チェックボックスだけをOnにした状態で
[OK]ボタンをクリックすると、文字列データが直接入力されているセルだけを選択できます。
これと同様の処理を行うのが、上記のマクロです。
サンプルマクロで行っている処理
RangeオブジェクトのSpecialCellsメソッドの、
第1引数に「定数」を意味する定数xlCellTypeConstantsを、
第2引数に「文字列」を意味する定数xlTextValuesを
それぞれ指定しています。
Cells.SpecialCells(xlCellTypeConstants, xlTextValues).Select
を
Cells.SpecialCells(xlCellTypeFormula, xlTextValues).Select
にすれば、戻り値が文字列の式が入力されているセルだけが選択されます。
また、
Cells.SpecialCells(xlCellTypeConstants, xlNumbers).Select
とすれば、数値の入力されているセルだけが選択されます。
- Newer:ISNUMBER関数とISERROR関数の違い
- Older:ActiveDocumnet.Sectionsとは
Home » Excel VBA Rangeオブジェクト » SpecialCellsメソッド » Excel VBAのxlTextValuesとは