CStr関数とStr関数は処理結果が異なる
数値などを文字列に変換する場合にCStr関数やStr関数を利用しますが、何が違うのかを説明します。
使い方は同じですが、Str関数の場合は0または正数の場合に左端に半角スペースが付与される、という点が異なります。
個人的には余計なことをやるStr関数は使わず、CStr関数を使うことをおすすめします。
コードでの説明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Sub CStrCompStrTest() Dim s As String '// 0 s = CStr(0) Debug.Print "CStr[0] → [""" & s & """] 長さ=" & Len(s) s = str(0) Debug.Print "Str [0] → [""" & s & """] 長さ=" & Len(s) '// 10 s = CStr(10) Debug.Print "CStr[10] → [""" & s & """] 長さ=" & Len(s) s = str(10) Debug.Print "Str [10] → [""" & s & """] 長さ=" & Len(s) '// -20 s = CStr(-20) Debug.Print "CStr[-20] → [""" & s & """] 長さ=" & Len(s) s = str(-20) Debug.Print "Str [-20] → [""" & s & """] 長さ=" & Len(s) End Sub |
“0”、”10″、”-20″をそれぞれCStr関数とStr関数で実行すると、結果は以下のようになります。
1 2 3 4 5 6 |
CStr["0"] → [0] 長さ=1 Str ["0"] → [ 0] 長さ=2 CStr["10"] → [10] 長さ=2 Str ["10"] → [ 10] 長さ=3 CStr["-20"] → [-20] 長さ=3 Str ["-20"] → [-20] 長さ=3 |
CStr関数の場合は数値をそのまま文字列に変換します。
しかし、Str関数の場合、0または正数(プラス値)の場合は左端に1文字分の半角スペースが付与されます。
ブラウザでは分かりにくいのですが、実行結果の2つ目(0)と4つ目(10)の長さを見るとCStr関数よりも1文字多くなっています。
CStr関数とStr関数の使い分け
0または正数の場合にマイナス記号と同様に記号分のスペースが表示や処理上必要であればStr関数を利用します。
ただ、そのような条件はかなり稀だと思います。
個人的にはスペースが付いたり付かなかったりというのはむしろ余計な編集処理が必要になるなど、不便なことの方が多いためStr関数は一切使わず、CStr関数やFormat関数を使っています。