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