Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA不显示用户窗体_Vba_Excel - Fatal编程技术网

Excel VBA不显示用户窗体

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

我有一个VBA宏,它通过向用户询问一系列问题(让他们说出哪个打开的工作簿执行哪个功能)来打开。我有一系列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次迭代

我在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
    

太好了-非常感谢。