18

同じカスタム オブジェクト タイプの 2 つの変数が同じオブジェクトを参照しているかどうかをテストする演算子または関数は何ですか? 私はもう試した

If myObject = yourObject Then

しかし、実行時エラー 438 object does not support this property or method. が発生します。これは、「=」演算子をオーバーライドして、2 つのオブジェクトのすべてのフィールドが同じ値であるかどうかをテストするように指示していると思います。しかし、私が望むのは、それらが同じオブジェクトであるかどうかをテストすることです。

4

2 に答える 2

38

これは、「=」演算子をオーバーライドして、2 つのオブジェクトのすべてのフィールドが同じ値であるかどうかをテストするように指示していると思います。

いいえ、そうでなければ呼び出されるはずのデフォルト プロパティがオブジェクトになく、返された結果が比較されていることがわかります。

参照の等価性をテストしますIs

If myObject Is yourObject Then 
于 2012-06-28T23:59:41.717 に答える
-1

何らかの方法でオブジェクトをシリアル化し、属性値で属性を比較する必要があります。「is」演算子は非常に愚かで、別のオブジェクトが比較対象の変数に割り当てられた同じインスタンスである場合にのみ一致します。jsonStringify ライブラリを使用することをお勧めします。私は自分の DexTools.xlam オープン ソース プロジェクトhttps://github.com/dexterial/Dextools/tree/master/Mainに合わせて、Excel VBA での JSONの解析の投稿から始めました。他にもかなりの数の Excel オブジェクトのシリアル化/ハッシュ オプションを追加し、DexTools に組み込まれている vba テスト駆動開発を使用して作成されているため、さらに多くの機能が追加されています。それはまだ進行中の作業なので、奇跡を期待しないでください

于 2018-12-09T18:05:35.440 に答える