我有一个小程序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
答案 0 :(得分:2)
我可以想到三个问题
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
第二个是表单在打开时正在接受工作簿列表,因此从逻辑上讲,它不会查找初始化后打开的任何工作簿
第三个问题可能是excel窗口。您的表单将在一个excel窗口中使用工作簿,如果您打开两个excel,则不会从中获取excel工作簿。 例如,以以下情况为例。
a。双击一个excel文件时,它会在同一窗口中打开。
b。当您在现有的excel窗口中单击“打开”并打开文件时,它将在同一窗口中打开
c。通过excel快捷方式打开另一个excel时,您正在打开另一个excel,并且该excel中的任何文件都不会包含在您的表单中。
我的知识仅限于excel的几个版本,也许在其他版本中情况有所不同,但是在我看到的情况下,情况可能是这样。