-1

我在用户窗体上有一个未更新的组合框,除非我放置一个断点并单步执行代码,或者弹出一个MsgBox等。

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

我确认在此之后没有触发事件。显示表单,当我显示一个 msgbox 时,或者如果我使用调试器单vbModeless步执行代码,则更新正确。F8CrossVariable_Cbox.Value

我的Debug.Print声明确认值匹配,但是,如果我允许它不间断地运行(没有 msgbox,没有调试模式),表单显示没有任何值,即使Print告诉我它已正确更新。

这当然会导致来自 MS Forms 的“无效属性值”通知。

有什么建议么?

在下面的镜头中,该值应该是“insurer”并且 listindex 为 372 或类似的值。两者都确认我是否调试它,但是当我允许它不间断运行时,该框显示 empty/listindex = -1,并导致错误...

在此处输入图像描述

4

1 回答 1

1

感谢 Santosh 的建议,我得以解决此问题。

桑托什建议:

Group_Form.CrossVariable_Cbox = groupVar
DoEvents

这是部分成功。我的 Debug 语句现在告诉我False,并且 ComboBox 仍然显示一个空白值。这以某种方式避免了最初的 MS Forms 警告,但除非我在组合框中进行选择,否则下一个操作/事件会引发警告。

我玩了一下,把DoEventsComboBox 任务放在前面:

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 回答