私はVB6(そしてどのような形式でもビジュアルベーシック)の開発に慣れていません。以下の字句エラーがあるかもしれません。なぜなら、私はコードをここでは少し読みやすくするように書いていたからですが、質問の本質は残っています。ここにコードがありますVB6のバリアントは、いつ割り当てられるかによって変わるのですか?
私の問題は、変数scrWordとresWordにいつ割り当てるかによって、MsgBoxの呼び出し(変数scrWordとresWordを参照するもの)の値が異なることです。上記のコードでコメントを外した最初の場所の変数scrWordとresWordに変数を代入すると、コードの最下部にあるメッセージボックスに、興味のない文字列が表示されます(たとえば、最初のメッセージボックスでは"srcws:resColNum:#"のような出力)、またはガベージ・データと思われるものがあります。これは、前のメッセージボックスで使用した静的な文字列を変数scrWordに代入したことに注意してください。これは決して意図された動作ではなく、私はどのように起こっているのか分かりません。
一方、上記のコードで変数代入がコメントされているメッセージボックスの直前で代入が行われた場合、変数は予期されているものとは多少異なる値を出力します正確に(通常、2つの変数はまったく同じです。あるいは、両方が異なるアルファ文字列であると予想される場合は1つの数値が数値です)。
私はこの問題に悩まされています。私はVariantデータ型を返すGetData呼び出しと関係があると考えています。
は、新しいコードを以下に掲載されて
エヴァン
、 、ありがとうございました。まだ動作しません。Dim srcWord As Variant
Dim resWord As Variant
Do While (BinsCol.GetData(grouprownum, 1) = binfromnum And nogroupfound = True)
Dim groupmismatch As Boolean
groupmismatch = False
For j = 1 To FormHyst.GroupList.ListCount
srcWord = sourceWS.Columns(j).GetData(i, 1)
resWord = "hello, world"
MsgBox ("srcws:" & srcWord & vbNewLine &_
"resws:" & resWord & vbNewLine &_
"test:" & (resWord <> srcWord))
Next
Loop
この新しいコードでは、srcWordとresWordの両方に「hello、world」と表示されます。
私はまだこの動作を理解できません。
デバッガでそのコードを実行しようとしましたか。 VB6デバッガはまともです。これは、予期せぬ動作の原因をMsgBoxの呼び出しを振りかざすよりはるかに優れているはずです。 – Tomalak
私はホストアプリケーションを拡張するDLLを書いています。私はVB6デバッガが良いと思うが、ホストアプリケーションを実行しなければならないとデバッグする方法がわからない(そうでなければ "GetData"への呼び出しにターゲットがない) –
sourceWSとresultWSオブジェクトとは何ですか? Excelワークシート? –