在多个打开的工作簿之间导航的用户窗体

时间:2018-10-17 13:13:16

标签: vba excel-vba userform

我有一个小程序VBA,它实际上是一种用户窗体,它允许我显示当前打开的所有现有工作簿。通过此用户表单,我可以选择另一个工作簿,然后单击列表框中显示的工作簿名称,通过激活它可以将我重新定向到所需的工作簿。问题在于它并非每次都起作用,有时当我尝试在列表框上单击所需的工作簿时,不一定将我重新定向到所需的工作簿。也许与我的列表框相关的代码有问题:With Me.ListBox1If .ListIndex <> -1 Then Workbooks (.Value).Activate 如果有人可以帮助我,那真的很棒。

谢谢 泽维尔

请在下面找到我的代码:

'code in module in VBAproject (personal.XLSB)
Sub UserFormmanagementworkbooks()
    UserForm2.Show vbModeless
End Sub

'code in userform called Userform2
Sub UserForm_Initialize()
    Dim n As Long
    Do
        n = n + 1
        Me.ListBox1.AddItem Workbooks(n).Name
    Loop Until n = Workbooks.Count
End Sub

Sub ListBox1_Click()
    With Me.ListBox1
        If .ListIndex <> -1 Then Workbooks(.Value).Activate
    End With
End Sub

1 个答案:

答案 0 :(得分:2)

我可以想到三个问题

  1. 首先可能是初始化问题,我已经初始化n = 0
Sub UserForm_Initialize()
    Dim n As Long
    n = 0
    Do
        n = n + 1
        Me.ListBox1.AddItem Workbooks(n).Name
    Loop Until n = Workbooks.Count
End Sub
  1. 第二个是表单在打开时正在接受工作簿列表,因此从逻辑上讲,它不会查找初始化后打开的任何工作簿

  2. 第三个问题可能是excel窗口。您的表单将在一个excel窗口中使用工作簿,如果您打开两个excel,则不会从中获取excel工作簿。 例如,以以下情况为例。

a。双击一个excel文件时,它会在同一窗口中打开。

b。当您在现有的excel窗口中单击“打开”并打开文件时,它将在同一窗口中打开

c。通过excel快捷方式打开另一个excel时,您正在打开另一个excel,并且该excel中的任何文件都不会包含在您的表单中。

我的知识仅限于excel的几个版本,也许在其他版本中情况有所不同,但是在我看到的情况下,情况可能是这样。