スポンサーリンク

【Excel/VBA】StrとCStr Strだと数字の前に空白が入るとは

VBA数値変換 vba
スポンサーリンク
※当サイトは広告を含みます

エクセルで「B列に文字列でIDを入れてください」というのがあり、

VBAで数値を文字列に変換するのは・・・たしか文字列だけにStr関数だったよな!とStrで数値を文字列に変換して、エクセルのセルに入力していく処理としたところ・・・あれ?数字の前に空白が!

そのおかげで後続の処理が正しく行われませんでした。

下の図がA列の数値のIDをB列にStr関数で文字列変換したものを入力した画面とそのコードです。

(B列はもともと書式を文字列にしています。)

ぱっと見わかりにくいのですが、B列のID番号の前には半角の空白が入っています。

なんと、Str関数は「符号を表示するためのスペースが必ず先頭に表示される」

だそうです。

参考:Str関数 | ExcelのVBA関数 (vba-ie.net)

ためしにマイナスの数値とゼロを入れてみました。

マイナスはいい感じですね。。。プラスの時まで空白いらないのに~

で、どうしたら余分な空白なしで出せるかというと、

①Trim関数で前後の余分な空白を削除する

CStr関数だと正の場合でも符号用の空白は出ない

②番がいいですね!

下の例では

B列にStr関数の結果

C列にTrimを加えたStr関数の結果

D列にCStr関数の結果

(B・C・D列はもともと書式を文字列にしています。)

符号用のスペースが必要だ!ということはほぼないと思うのでCStr関数を使うのが一番ですね!

こちらのサイトも参考とさせていただきました。

VBAのCStr関数とStr関数の違い | Excel作業をVBAで効率化 (vbabeginner.net)

ありがとうございました!

スポンサーリンク
スポンサーリンク
vba
スポンサーリンク
mwkをフォローする
エクセルがともだち

コメント

タイトルとURLをコピーしました