VBAの組み込み関数である、CStr関数とStr関数の違いを解説します。
同じところ
どちらも値を文字列(String型)に変換する関数です。
以下のコードはどちらも数値の-123を"-123"の文字列に変換します。
CStr(-123) ' ← "-123" Str(-123) ' ← "-123"
違うところ
CStr関数はストレートに文字列型に変換するC(キャスト)関数のひとつですが、
Str関数は少し特殊な仕様を持っている関数です。
まず大きな違いとして、Str関数は正の値を文字列に変換する際、
符号分の半角スペースを先頭に挿入します。
CStr(123) ' ← "123" Str(123) ' ← " 123"
またこちらはあまり言及されていない仕様ですが、
実数部が0の小数を変換した場合はStr関数では0が消えます。
CStr(1 / 3) ' = "0.333333333333333" Str(1 / 3) ' = " .333333333333333"
なかなか用途の思いつかない仕様ですね(´∀`;)
また、Str関数は「数値を文字列に変換する」関数だけあって、
文字列を渡すとエラーとなります。
Str("あいう") ' ← 「型が一致しません」エラー
といいつつ、Boolean型やDate型はエラーにならないため、
判定はIsNumericよりは緩いようです。
使い分け
常にCStr関数を使っておけばOKです。
Str関数を使用する場面はほとんどないと思いますので、
間違って使わないよう注意してください。