为什么我需要打开VBA编辑器窗口才能使我的宏工作?

时间:2016-04-19 19:51:39

标签: excel vba excel-vba macros

我有一个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)  

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窗口基本相同。