我在没有更新的用户表单上有一个组合框,除非我放了一个断点并单步执行代码,或弹出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
语句确认值匹配,但是,如果我允许它不间断运行(没有msgbox,没有调试模式),表单显示没有值,即使Print
告诉我已正确更新。
这当然会导致MS Forms的“无效的属性值”通知。
有什么建议吗?
在下面的镜头中,值应该是“保险公司”和列表指数372或类似的东西。两者都确认我是否调试它,但是当我允许它不间断地运行时,该框显示空/ listindex = -1,并导致错误......
答案 0 :(得分: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中显示正确的值。