我有一个Excel中的数据驱动工具,它有5个多页面用户表单。每个表单都包含多个数据字段(所有表单中都有250多个数据字段)。 13个控制组成每个领域。所以它们很大。显示和隐藏用户表单 - 超出堆栈错误
系统允许用户通过单击“显示注释”按钮打开每个字段的注释表单。它是连接起来使用基于类的事件,使用下面的代码:
Private Sub mShowGroup_Click()
Dim fm As formCommentDisplay 'the form to be shown
'Snip not relevant code
HideDataEntry
fm.Show
ShowDataEntry
End Sub
的HideDataEntry子隐藏在主数据输入,从而使惟有评论表单是可见的。这是必需的,因为用户可以使用打印屏幕显示评论的打印版本 - 如果表单未隐藏,则用户不能关闭打印屏幕。
问题是如果用户打开多个评论表单,则堆栈溢出。原因是ShowDataEntry子。
Sub ShowDataentry()
Dim fForm as Variant
For each fForm in UserForms
fForm.Show
Next fForm
End Sub
该代码显示了适当的数据输入表单,但是由于表单是Modal,它将保留在堆栈中。然后下一次显示注释表单时,堆栈将会增加并增加,直到出现堆栈错误。
我正在努力想办法解决这个问题。由于控件数量众多,我不希望每个控件都有事件代码。这就是事件代码在类中并通过对象集合触发的原因。有一个想法是隐藏了表单,然后当代码完成时使用表单中的事件触发器来重新显示表单 - 但我认为这不可能。
任何想法?
你如何尝试运行设置'ShowModal = False' – 2013-03-08 00:09:11
我需要的形式是模态 – 2013-03-08 04:46:41