VBA でモジュール クラスから新しいオブジェクトを作成しようとしていますが、少し問題があります。2 行の割り当てコードは同じように見えますが、結果は異なります。
エラーメッセージが表示されました:
その後、(2) の代わりに (1) を使用するように切り替え、エラーは修正されました。
しかし、わかりません。なぜこのような違いがあるのでしょうか?
VBA でモジュール クラスから新しいオブジェクトを作成しようとしていますが、少し問題があります。2 行の割り当てコードは同じように見えますが、結果は異なります。
エラーメッセージが表示されました:
その後、(2) の代わりに (1) を使用するように切り替え、エラーは修正されました。
しかし、わかりません。なぜこのような違いがあるのでしょうか?
Dim
変数を宣言し、Set
インスタンス化します。
そのため、常にDim
beforeを使用することをお勧めしSet
ます。
を使用して変数の特定の型を宣言しない場合Dim
は、後で変数を別の型に変更できます。
set aosh = new AOSHRatioQuery
変数を文字列に変更できます。
aosh = "A pint of milk"
メソッドは 2 番目の引数としてsendAsyncRequest
a を想定しAOSHRatioQuery
、VBA コンパイラは、aosh
変数が実際にその型のインスタンスを含むことを保証できないことを認識しているため、型の安全性に違反し、解釈できないガベージを受信しないように型の不一致エラーが発生します。sendAsyncRequest
with を明示的に入力するDim aosh as new AOSHRatioQuery
と、常にインスタンスまたは(別の型に代入しようとするとエラーが発生します) であることaosh
が保証されているため、安全に渡すことができます。AOSHRatioQuery
Nothing
VBA では、Dim キーワードを使用して変数を宣言し、As キーワードでデータ型を定義する必要があります。それがその構文の仕組みです。一般的な形式として:
Dim <variableName> As <dataType>