「left関数で抜き出すと データ型は文字列」
という検索で、このサイト『インストラクターのネタ帳』へアクセスがありました。
どのプログラミング言語での話かわかりませんけれど、VBAのLeft関数について記事を書いておきます。
Left関数の戻り値を確認するサンプル
以下のSubプロシージャを実行してください。
Dim num As Long
num = 1234567
Dim tmp As Variant
tmp = Left(num, 3)
MsgBox TypeName(tmp)
End Sub
Left関数の戻り値を代入しただけの変数tmpの値「123」と、TypeName関数で取得したtmpのデータ型を示す「String」が、
MsgBox tmp
MsgBox TypeName(tmp)
メッセージボックスに表示されます。
検索キーワード
「left関数で抜き出すと データ型は文字列」
のとおり、Left関数で取得したデータは、String型・文字列型です。
VBAのLeft関数の仕様を知らないと、Long型データの左から3文字「123」を取得するのだから、tmpはLong型またはInteger型になると考えてしまうかもしれませんが、違います。Left関数の戻り値は、「123」のような数値として扱い得るデータであったとしても、String型・文字列型です。
ローカルウィドウを使った確認
拙著『いちばんやさしいExcel VBAの教本』等で多用している、ローカルウィドウを使った確認も行いましょう。
VBEの、メニュー[表示]-[ローカルウィドウ]からローカルウィドウを表示した状態で、上記のSubプロシージャをステップ実行です。
Left関数の戻り値を、Variant型の変数tmpに代入する、
tmp = Left(num, 3)
が実行された後には、下図のような表示になります。
tmpの[型]欄には、Variantで宣言していた変数に、Left関数の戻り値が代入された結果Stringになっているので、「Variant/String」と表示されています。
この「String」が、先ほど
MsgBox TypeName(tmp)
で表示された「String」です。
Left$関数はあるけれど
VBAには、定義的にはVariantを返すことになっているけれど、実質的にStringを返すケースが多い関数等に、関数名の末尾に「$」のついた関数が複数用意されています(下図はオブジェクトブラウザーで「$」を検索した結果)。
Left関数についてもLeft$関数が存在します。オブジェクトブラウザーの詳細ペインに「As String」と表示されているとおり、
Left$関数の戻り値は、明確に文字列です。
数値として扱い得るデータを返す際に、Long型など数値型のデータを返すのならば、Left関数の存在意義があるとは思うのですが、実際はそうではないのでLeft$関数を別途用意するより、Left関数を「As String」とした関数にして欲しいと、私は思います。
最終更新日時:2021-01-06 13:18
- Newer:Excel VBAでWord.Selectionを取得する
- Older:最終段落をWord VBAで削除する
Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » Left関数の戻り値は結局String