エクセルで「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)
ありがとうございました!
コメント