
エクセルVBA2003について質問です。
Sub aaa1()
Dim a As Variant
Debug.Print TypeName(a)
End Sub
を実行してイミディエイトウインドウで確認すると
Emptyが返ってきます。
Variantが返ってこない理由は何でしょうか?
また、変数の方の宣言をしない場合は
Variant型になるはずなのに
Sub aaa2()
Dim a
Debug.Print TypeName(a)
End Sub
を実行すると、同じくEmptyが返ってきます。
Variantが返らない理由を教えてください。よろしくお願いします。
No.1ベストアンサー
- 回答日時:
Empty 値は、初期化されていない (初期値が代入されていない) バリアント型の変数を示します
バリアント型は、代入された値に合わせて型が設定されます。
代入される値の型があらかじめ解らないような場合に使用され、値が入った時点で型が設定される
ようになっている。
逆を言えば、バリアント型の値が無いとも言えます。
従って、TypeName の戻り値がバリアント型になる事は無いはずです。
Dim a As Variant
a = 123
Debug.Print TypeName(a)
a = "abc"
Debug.Print TypeName(a)
Set a = Nothing
Debug.Print TypeName(a)
a = 1.11111111111111E+27
a = CVar(a)
Debug.Print TypeName(a)
昔は、バリアント型の変数は、メモリの消費が多く処理速度が遅いので使うなと言われていたのですが。
>Empty 値は、初期化されていない (初期値が代入されていない) バリアント型の変数を示します
よく覚えます。ありがとうございました。
No.3
- 回答日時:
まだ(2012/02/13 12:00)質問受付中になっておりますが、先の回答では疑問が解決
されていないのでしょうか?
でしたら、どの部分かを再質問願います。
(回答した以上 未解決で保留されておられますと回答がまずかったかなと気になります。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBA たまに変数がempty値になるエラー
Excel(エクセル)
-
VBAでEmpty値って何ですか?
Excel(エクセル)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
-
4
エクセルVBA 変数への代入がうまくできない
Visual Basic(VBA)
-
5
配列の参照渡しで型が一致しません。
Visual Basic(VBA)
-
6
マクロの「SaveAs」でエラーが出るのを解消したいです(再)
Visual Basic(VBA)
-
7
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
8
マクロ実行後に別シートの残像が残り、オブジェクトが見えなくなる
Visual Basic(VBA)
-
9
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
10
もしセルが#N/A"なら~をする・・・には?"
Excel(エクセル)
-
11
エクセル(VBA)の空白配列の削除について
Excel(エクセル)
-
12
有無、要否、賛否、是非、可否、当否…これらの言葉について
その他(教育・科学・学問)
-
13
VBAで、セル(Range)のオブジェクトが取得できない
Excel(エクセル)
-
14
Excelで数値→文字列変換で指数表示になったものをいっぺんに直したい
Excel(エクセル)
-
15
ExcelのVBAでGoToの代わりに…
Excel(エクセル)
-
16
動的配列が存在(要素が有る)か否かを判定できますか?
Visual Basic(VBA)
-
17
IF関数でEmpty値を設定する方法。
Excel(エクセル)
-
18
Excelの非表示列も含めてコピー
Excel(エクセル)
-
19
VBAの配列サイズとメモリに関して
Visual Basic(VBA)
-
20
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jsp~jspにhiddenを使って変数...
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
テキストボックスの値を変数に...
-
Variant型で宣言してるのにEmpt...
-
Serialize(CArchive& ar)にて
-
processing エラーで、 "cannot...
-
EXCEL/VBA 変数の値をクリップ...
-
gridViewの行選択解除
-
String型ローカル変数の初期化...
-
計算プログラムにおける無限大...
-
C言語 アロー演算子について質...
-
Accessコンボボックスにレコー...
-
verilog HDLの[=]と[<=]の使い分け
-
C言語 exitの使い方
-
RichTextBoxの改行を認知してく...
-
○桁にある数値を取得する VB.N...
-
VB6.0-整数と余りを求める
-
フォームを開くときに、コンボ...
-
VBAのWorksheetFunctionの引数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
EXCEL/VBA 変数の値をクリップ...
-
jsp~jspにhiddenを使って変数...
-
整数xxxが大き過ぎますというエ...
-
C言語 アロー演算子について質...
-
[VBS]変数を定数に変換する方法...
-
Variant型で宣言してるのにEmpt...
-
テキストボックスの値を変数に...
-
processing エラーで、 "cannot...
-
Accessコンボボックスにレコー...
-
DataTableの値を変数に代入したい
-
条件演算子 ? :
-
インクリメント演算子の前置(+...
-
プログラミングで変数と関数の...
-
gridViewの行選択解除
-
無名関数のメリットがよくわか...
-
stdpicture型の変数に、、
-
論理演算子について
-
COBOLの変数
おすすめ情報