みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

投稿日時 - 2004-08-12 11:49:12

QNo.959525

暇なときに回答ください

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

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

投稿日時 - 2004-08-12 17:10:51

ANo.3

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

投稿日時 - 2004-08-12 16:05:56

ANo.2

簡単なものなら良いでしょうが、ソースが長くなって来ると原因不明の不具合が「変数の単純な記入ミスだった」なんて事も起こります。

Iist → list など(Lの小文字とiの大文字)

Option Explicit などを使う事でこれらを回避したりします。

投稿日時 - 2004-08-12 12:55:06

ANo.1

明示的に変数を定義するためです。
明示的に定義したほうが、わかりやすいからです。

Option Explicit On
にしてると、明示的に定義する必要があります。
ちなみに.NETではデフォルトがOption Explicit Onです。

投稿日時 - 2004-08-12 12:48:05

あなたにオススメの質問