3

VBA でモジュール クラスから新しいオブジェクトを作成しようとしていますが、少し問題があります。2 行の割り当てコードは同じように見えますが、結果は異なります。

ここに画像の説明を入力

エラーメッセージが表示されました:

ここに画像の説明を入力

その後、(2) の代わりに (1) を使用するように切り替え、エラーは修正されました。

ここに画像の説明を入力

しかし、わかりません。なぜこのような違いがあるのでしょうか?

4

3 に答える 3

4

Dim変数を宣言し、Setインスタンス化します。

そのため、常にDimbeforeを使用することをお勧めしSetます。

于 2012-07-23T04:06:09.580 に答える
3

を使用して変数の特定の型を宣言しない場合Dimは、後で変数を別の型に変更できます。

set aosh = new AOSHRatioQuery

変数を文字列に変更できます。

aosh = "A pint of milk"

メソッドは 2 番目の引数としてsendAsyncRequesta を想定しAOSHRatioQuery、VBA コンパイラは、aosh変数が実際にその型のインスタンスを含むことを保証できないことを認識しているため、型の安全性に違反し、解釈できないガベージを受信しないように型の不一致エラーが発生します。sendAsyncRequest

with を明示的に入力するDim aosh as new AOSHRatioQueryと、常にインスタンスまたは(別の型に代入しようとするとエラーが発生します) であることaoshが保証されているため、安全に渡すことができます。AOSHRatioQueryNothing

于 2012-07-23T11:22:04.370 に答える
3

VBA では、Dim キーワードを使用して変数を宣言し、As キーワードでデータ型を定義する必要があります。それがその構文の仕組みです。一般的な形式として:

Dim <variableName> As <dataType>
于 2012-07-23T04:03:42.420 に答える