-1

ブレークポイントを置いてコードをステップ実行するか、MsgBox.

'MsgBox "", vbInformation
Group_Form.CrossVariable_Cbox = groupVar
Debug.Print "After updating Group_Form.CrossVariable_Cbox = " & _
            groupVar & ":  " & (Group_Form.CrossVariable_Cbox = groupVar)

この後発火するイベントがないことを確認しました。フォームが表示されvbModeless、msgbox を表示するか、F8デバッガーを使用してコードをステップ実行すると、CrossVariable_Cbox.Value正しく更新されます。

私のDebug.Printステートメントは値が一致することを確認しますが、これを中断せずに実行できるようにすると (メッセージボックスなし、デバッグモードなし)、フォームがPrint正しく更新されたことが示されていても、フォームは値なしで表示されます。

これはもちろん、MS Forms からの「無効なプロパティ値」通知の原因です。

助言がありますか?

下のショットでは、値は「保険者」であり、listindex は 372 などである必要があります。どちらもデバッグするかどうかを確認しますが、中断せずに実行できるようにすると、ボックスに empty/listindex = -1 が表示され、エラーが発生します...

ここに画像の説明を入力

4

1 に答える 1

1

Santosh の提案のおかげで、これを修正できました。

Santosh は次のように提案します。

Group_Form.CrossVariable_Cbox = groupVar
DoEvents

これは部分的な成功でした。Debug ステートメントが教えてくれるようFalseになり、ComboBox にはまだ空白の値が表示されます。これにより、最初の MS Forms 警告が回避されますが、コンボボックスで選択しない限り、次のアクション/イベントで警告が発生します。

DoEvents私は少し遊んで、ComboBox 割り当ての前に置きました。

DoEvents
Group_Form.CrossVariable_Cbox = groupVar

Debug.Print "After updating Group_Form.CrossVariable_Cbox = " & _
            groupVar & ":  " & (Group_Form.CrossVariable_Cbox = groupVar)

これで、私のデバッグ ステートメントが教えてくれますTrue。最も重要なことは、フォームが ComboBox に正しい値を表示することです

于 2013-06-13T14:31:30.283 に答える