- ベストアンサー
VBA 文字列と数値の混在に関する疑問
- VBAで文字列と数値を組み合わせた場合、エラーにならず結果は文字列になります。
- InputBox関数の戻り値は文字列であるが、数値型の変数に代入してもエラーは発生しません。
- これらの挙動はVBAの規則上当たり前のものです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
コンピューターデータの基礎論で言えば、データ型は、処理に一番大切なものです。 しかしVBAの元のBasic言語のBはBiginnersのBです。型を詳しくチェックして、エラーをたくさん指摘して出し、初心者に面倒だな、と思わせるより、コンパイラーに当たるシステムの方で、頻度の多そうな線を規定値として(変換)しまう方法を選んだのだと思います。あくまで初心者に近い小生の考えですが。 またオブジェクト指向のプログラミングでは、当初に変数の型を、Defautで決めやすい仕組みであることも、それを助けていると思います。 文字列と数字を&で結合した場合は文字列に扱うのは、知っておく必要があるでしょう。逆手に取って、シートのセルの指定で、頻繁に使わせてもらっています。例 Range("A" & i)(iは正整数数字) 文字列と数字の+は&と同じ扱いです。加算ではない。 エクセルシートでの、数字全角文字列と半角数字の加算は、やってみると、前者を半角数字の扱いで加算されました。 こういう思想が底に流れていると思います。 ーー こういう質問を発想するのは、質問者は、他言語をすでに、かじった人かもしれないですが、それでなぜと思うのかもしれないですが、VBA(VB6.0がベース)での、いろんなケースを経験する(データのチェックを入れる)ほかないように思います。自分以外がエクセルを使う場合のVBAなどで、開発の場面などでは、チェックを厳密にして、思わぬ方に処理されないようにチェックする必要があると思います。 ーー もうひとつ、Inputbox、TextboxなどBoxの付いたものは、応答は文字列を返すのが標準と考えた方がよい。数字扱いしたいなら、変換を心がける。
その他の回答 (3)
- kkkkkm
- ベストアンサー率66% (1719/2589)
先ほどの最後にリンクがありますがこちらも参考にしてください。 VBA 数値を変換する https://www.tipsfound.com/vba/04007
お礼
先ほどと同様、ありがとうございました。今後の参考にさせていただきます。
- kkkkkm
- ベストアンサー率66% (1719/2589)
参考にしてください VBA 文字列を変換する https://www.tipsfound.com/vba/04004
お礼
有益なURLありがとうございました。『特別な操作をしなくても、整数型に数字を代入すると自動的に変換されます』等あるので私の疑問の点も自動変換と理解しました。明示的に変換する時の関数も一覧がありますので今後参考にさせていただきます。
- asuncion
- ベストアンサー率33% (2127/6289)
>「文字列 & 数値」でエラーにならず、結果は文字列になる 型の混在を開発者が気にしなくてもいいように、そういう仕様にしているんだと思います、たぶん。
お礼
迅速なご回答ありがとうございました。Excelは自動変換してくれることが多いのできっとそうなのかもしれませんね。結果オーライというこで考えようかと思います。
お礼
丁寧なご回答ありがとうございました。よくわかりました。またRange("A" & i)が使えるとなるとFor文の中で容易に使えそうで利用度が上がるように思います。列方向も使えるともっと良いのですが。経験のない私にとってはご回答により安心感が出てきました。ありがとうございました。