• 締切済み

エクセル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を使う意味は何なのでしょうか?

みんなの回答

  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.4

$は文字型を意味するだけです。 Dim A As String と書くかわりに Dim A$ と書けるだけの話です。 このこととDimの有無の意味は別です。 未定義の変数いきなり使える(Option ExplicitがOFF)環境ですと、おっしゃるように違いはありません。 Dimの意義についてはすでに回答が出ていますので割愛します。 頑張ってくださいヽ(^。^)ノ

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

メモリが4K、OSなし、TinyBasicなんてBasic時代があって、MSDOSのBasicの時代は何しろメモリが1バイトでも貴重で、変数名も出来るだけ短くが推奨され、その当時文字列$と整数%。単精度!、倍精度#の「変数型宣言」が決められていました。それがVisualBasic時代になっても禁止はせず残してあります。一般に他の言語ではDim A As String式が多く、VBもそちらをメインとして採用してるはずですから、「いちいちDimで整数か文字列かを指定しなくていいだけ簡単だと思うのですが、わざわざDimを使う意味は何なのでしょうか」というのは感覚がちょっと違うように思いますが。変数名に型宣言は含めないのが主流になったと言うことです。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

簡単なものなら良いでしょうが、ソースが長くなって来ると原因不明の不具合が「変数の単純な記入ミスだった」なんて事も起こります。 Iist → list など(Lの小文字とiの大文字) Option Explicit などを使う事でこれらを回避したりします。

回答No.1

明示的に変数を定義するためです。 明示的に定義したほうが、わかりやすいからです。 Option Explicit On にしてると、明示的に定義する必要があります。 ちなみに.NETではデフォルトがOption Explicit Onです。

関連するQ&A