この関数について
ExcelVBA(マクロ)では他の高級なプログラミング言語と違い、初期状態からブックが用意されシートやセルへの操作が可能です。このため、どうしても意識せざる得ないものがセルの書式です。先頭が0から始まる会員番号や、日付判定される「丁目」以降の番地や、ハイフンなしの電話番号など、そのままセルに貼り付けると意図した通りに反映しないデータが存在します。こんなとき最も単純な解決策は、データを「Variant」型ではなく「String」型で保持することです。「String」型の変数や配列をセルに代入(入力)すると、意図した通りにデータが反映します。ExcelVBAを学び始めた頃の私は上記のような問題にぶつかり型指定の重要性について考えた結果、様々なデータが混在する表は「String」型の配列として取り扱うことにしていました。しかし、関数リファレンスで紹介する関数群の戻り値は原則「Variant」型です。「String」型と宣言した配列に「Variant」型の配列を代入しようとすると「配列には割り当てられません。」エラーが発生します。前置きが長くなりましたが、すべてのデータを「String」型で扱いたかった私が作成したのがこのページで紹介する配列の型変換を行う関数です。
関数コピペ ~コードをクリックするだけでコピー完了!~
使い方 ①引数
■引数1:arr
型変換したい配列
■引数2:var_type_code
ExcelVBAで標準で使える型指定用の定数を渡します。対応しているのは、vbString、vbVariant、vbLong、vbDouble、vbDateです。指定した型へ変換します。
■引数3:based_index
配列のbaseを指定できます。デフォルトは1になっています。
使い方 ②戻り値
指定の型へ変更された配列を返します。
サンプルコード(クリックでコピー)
【結果】配列の型変換ができました
上記のサンプルコードで「Variant」型の配列を「String」型の配列へ代入しようとしている部分をコメントアウトしています。コメントを外して実行すると「配列には割り当てられません。」というエラーが発生します。しかし型変換関数を経由すると同エラーは発生しません。サンプルコードでは単純に「Variant」型配列を格納しようとしていますが、これが関数の戻り値の場合でも同様のエラーが起きます。その時、型変換配列を経由することでエラーを回避できます。
・・・私以外の人に需要がある想像ができませんが。
Comment