Excel VBA不显示用户窗体

我有一个VBAmacros,通过询问用户一系列问题(要求他们说哪一个打开的工作簿执行哪个function)来打开。 我有一系列的userform.show命令如下:

UserForm2.Show ' select cost data file Set piersBook = ActiveWorkbook UserForm5.Show ' select IRR file Set irrBook = ActiveWorkbook UserForm6.Show ' select BC summary file Set bcSummary = ActiveWorkbook 

(现在,在事件之后,我意识到把这些放到一个用户表单中会更简单)。

净效应是最后一个不显示。
经过一番研究,我将代码改为:

  UserForm2.Show ' select cost data file Set piersBook = ActiveWorkbook UserForm5.Show ' select IRR file Set irrBook = ActiveWorkbook DoEvents UserForm6.Show ' select BC summary file Set bcSummary = ActiveWorkbook 

这工作了大约5或6迭代,才恢复到原来的问题。

我把断点放在用户表单初始化代码中。 他们都被称为和用户forms都工作(直到我再次删除断点)。

最后,我开始删除有问题的用户表单:问题转移到下一个问题。 再一次,当这个被删除,以前的一个。

用户表单的代码是一样的:

 Private Sub ListBox1_Click() Workbooks(ListBox1.Value).Activate Unload Me End Sub Private Sub UserForm_Initialize() Dim wb As Workbook For Each wb In Workbooks ListBox1.AddItem wb.Name Next wb End Sub 

有什么想法吗? 目前,我正在对不理想的投入进行硬编码。 非常感谢。

只使用UserForm2 ,然后:

  • 更改您的UserForm2代码,如下所示

     Private Sub ListBox1_Click() With Me If ListBox1.ListIndex <> -1 Then .Tag = .ListBox1.Value .Hide Else MsgBox "You must select a workbook" End If End With End Sub Private Sub UserForm_Initialize() Dim wb As Workbook For Each wb In Workbooks ListBox1.AddItem wb.Name Next wb End Sub 
  • 改变你的“主”代码如下

     Dim piersBook As Workbook, irrBook As Workbook, bcSummary As Workbook With UserForm2 .Caption = "select cost data file" .Show ' select cost data file Set piersBook = Workbooks(.Tag) .Caption = "select IRR file" .Show ' select cost data file Set irrBook = Workbooks(.Tag) .Caption = "select BC summary file" .Show ' select BC summary file Set bcSummary = Workbooks(.Tag) End With Unload UserForm2