我有一个Excel文件,其中VBA宏将数据加载到Userform。
如果我第一次打开Visual Basic编辑器(通过单击Developer - > Visual Basic),宏永远不会崩溃,但如果我在没有编辑器打开的情况下运行它,它有时会崩溃并关闭Excel。
好像打开VBA编辑器会激活宏并使其正常工作。
我试图缩小为什么会这样,以及如何修复我的文件,所以我不需要先打开编辑器。有什么想法吗?
编辑:我不明白为什么我被投票。
宏的示例代码:
Public Sub LoadButton_Click()
'Policy Information
ZoneLatitudeTextBox.Text = Sheets("Saved Policy Values").Cells(2, 2)
ZoneLongitudeTextBox.Text = Sheets("Saved Policy Values").Cells(3, 2)
TownClassComboBox.Text = Sheets("Saved Policy Values").Cells(4, 2)
答案 0 :(得分:4)
这个帖子为我提供了我的问题的答案:
http://www.xtremevbtalk.com/excel/229325-excel-crashes-unless-vba-editor.html
当Userform具有太多控件时,显然Excel会遇到内存问题。打开VBA编辑器会以某种方式绕过内存问题并允许关联的宏正常运行。
要自动执行此过程,只需将以下代码行添加到宏的开头:
Application.VBE.MainWindow.Visible = True
Application.VBE.MainWindow.Visible = False
答案 1 :(得分:1)
我找到了解决方案!!在没有先在VBA编辑器中打开表单的情况下打开UserForm数月之久,就会耗尽整个程序。
Another thread指出Excel更改为并行加载表单,因此,当一件先于另一件完成时,它会导致整个崩溃。就像您的朋友仍在3个街区之外时,您在“这里”给您发短信时一样,如果您在他们到达您的房子之前就出门,您就会丧命。无论如何。
如果您通过按钮调用UserForm,请将其添加到Button_click()
子项中。
ThisWorkbook.VBProject.VBComponents("UserForm").Activate
它告诉Excel单击按钮后立即加载表单,而不是首先加载进入表单的所有内容。这与打开VBA窗口基本相同。