Excel VBA不显示用户窗体
我有一个VBA宏,它通过向用户询问一系列问题(让他们说出哪个打开的工作簿执行哪个功能)来打开。我有一系列userform.show命令,如下所示:Excel VBA不显示用户窗体,vba,excel,Vba,Excel,我有一个VBA宏,它通过向用户询问一系列问题(让他们说出哪个打开的工作簿执行哪个功能)来打开。我有一系列userform.show命令,如下所示: UserForm2.Show ' select cost data file Set piersBook = ActiveWorkbook UserForm5.Show ' select IRR file Set irrBook = ActiveWorkbook UserForm6.Show ' select BC su
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次迭代
我在userform初始化代码中设置了断点。它们都被调用,用户表单都工作(直到我再次删除断点)
最后,我开始删除有问题的用户表单:问题转移到下一个用户表单。再一次,当它被移除时,是之前的那个
userforms的代码相同:
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