0

For Each ループを使用して、VB6 の Variant 配列を処理しています。ある時点で、Variant であるループの要素 (elem) を Node に変換したいと考えています。

Dim elem as Variant

For Each elem In ndArray
    Dim nodle As Node
    nodle = CType(elem , Node)
Next

これはループ全体ではありませんが、私が何をしようとしているのかがわかります。このコードを実行すると、CType メソッドの「ノード」を指す「変数が定義されていません」というエラーが表示されます。これは変数ではなく、型であり、メソッドは型を想定しているため、それを認識している必要があります。

CTypeメソッドをスキップしてnodle=elemだけにしてみましたが、「オブジェクト変数またはWithブロック変数が定義されていません」というエラーが出ました。式の前に Set キーワードを追加すると、エラーが「オブジェクトが必要です」に変わりました

elem 変数をデバッグして確認すると、有効な Node 値が含まれているように見えます。

ここで何が起こっているか知っている人はいますか?この変換は可能ですか?

どんな提案でも大歓迎です。

4

1 に答える 1

0

Set?を追加してみてください。

Set nodle = CType(elem , Node) 

SetNodeがオブジェクト型でnodle、オブジェクト参照を含む場合に必要です。を省略するSetと、コンパイラは、Nodeオブジェクトの既定のプロパティを変更する必要があると見なします。

于 2013-07-10T11:05:17.127 に答える