- 締切済み
エクセルVBAで、Dim A As StringとA$
変数を使用するにあたり、 Dim A As String A=Sheets("Sheet1").range("A1").Value MsgBox A という記述方と、 A$=Sheets("Sheet1").range("A1").Value MsgBox A$ という記述は同じ意味だと思うのですが、何か違いがあるのでしょうか? Stringなら「$」、Integerなら「%」で、いちいちDimで整数か文字列かを指定しなくていいだけ簡単だと思うのですが、わざわざDimを使う意味は何なのでしょうか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- snoopy64
- ベストアンサー率42% (337/793)
$は文字型を意味するだけです。 Dim A As String と書くかわりに Dim A$ と書けるだけの話です。 このこととDimの有無の意味は別です。 未定義の変数いきなり使える(Option ExplicitがOFF)環境ですと、おっしゃるように違いはありません。 Dimの意義についてはすでに回答が出ていますので割愛します。 頑張ってくださいヽ(^。^)ノ
- imogasi
- ベストアンサー率27% (4737/17069)
メモリが4K、OSなし、TinyBasicなんてBasic時代があって、MSDOSのBasicの時代は何しろメモリが1バイトでも貴重で、変数名も出来るだけ短くが推奨され、その当時文字列$と整数%。単精度!、倍精度#の「変数型宣言」が決められていました。それがVisualBasic時代になっても禁止はせず残してあります。一般に他の言語ではDim A As String式が多く、VBもそちらをメインとして採用してるはずですから、「いちいちDimで整数か文字列かを指定しなくていいだけ簡単だと思うのですが、わざわざDimを使う意味は何なのでしょうか」というのは感覚がちょっと違うように思いますが。変数名に型宣言は含めないのが主流になったと言うことです。
- papayuka
- ベストアンサー率45% (1388/3066)
簡単なものなら良いでしょうが、ソースが長くなって来ると原因不明の不具合が「変数の単純な記入ミスだった」なんて事も起こります。 Iist → list など(Lの小文字とiの大文字) Option Explicit などを使う事でこれらを回避したりします。
- peugeot307
- ベストアンサー率22% (29/130)
明示的に変数を定義するためです。 明示的に定義したほうが、わかりやすいからです。 Option Explicit On にしてると、明示的に定義する必要があります。 ちなみに.NETではデフォルトがOption Explicit Onです。