Excel 用于在几个打开的工作簿之间导航的Userform
我有一个小程序VBA,它实际上是一个用户窗体,允许我显示当前打开的所有现有工作簿。通过此用户表单,我可以选择另一个工作簿,通过单击列表框中显示的工作簿名称,它可以通过激活该工作簿来将我重新定向到所需的工作簿。问题是,它并不是每次都有效,有时当我试图单击列表框中所需的工作簿时,它不一定会将我重新定向到所需的工作簿。可能与我的列表框相关的代码有问题:Excel 用于在几个打开的工作簿之间导航的Userform,excel,vba,userform,Excel,Vba,Userform,我有一个小程序VBA,它实际上是一个用户窗体,允许我显示当前打开的所有现有工作簿。通过此用户表单,我可以选择另一个工作簿,通过单击列表框中显示的工作簿名称,它可以通过激活该工作簿来将我重新定向到所需的工作簿。问题是,它并不是每次都有效,有时当我试图单击列表框中所需的工作簿时,它不一定会将我重新定向到所需的工作簿。可能与我的列表框相关的代码有问题:与Me.ListBox1If.ListIndex-1,然后是工作簿(.Value).Activate 如果有人能帮我,那就太好了 谢谢 泽维尔 请在下面
与Me.ListBox1If.ListIndex-1,然后是工作簿(.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
VBA项目(personal.XLSB)中模块中的代码
子用户表单管理工作簿()
UserForm2.Show vbModeless
端接头
'userform中名为Userform2的代码
子用户表单_初始化()
长
做
n=n+1
Me.ListBox1.AddItem工作簿(n).名称
循环直到n=工作簿。计数
端接头
子列表框1_单击()
和我一起
如果.ListIndex为-1,则工作簿(.Value).Activate
以
端接头
我能想到三个问题
我的知识仅限于excel的几个版本,可能在其他版本中情况有所不同,但在我所看到的版本中,情况可能就是这样。我可以想到三个问题
我的知识仅限于excel的几个版本,可能在其他版本中情况有所不同,但在我所看到的版本中可能会出现这种情况。我之所以添加此项,是因为两个原因(1)我觉得初始化变量总是一个好主意(2)第二个是我还没有测试过,但是当表单第二次初始化时,它可能会得到旧的n值(在某些语言中确实会发生),非常感谢Usmanhaq的观点,在0初始化时,它似乎工作得更好一些…关于打开的新工作簿,您是对的,如果我在userform仍然打开时打开一个新的列表,它不会自动添加到listbox中(换句话说,我的listbox不是动态的)。在这种情况下,我必须关闭userform并重新打开它,然后我可以看到新工作簿在我的列表框中打开。我之所以添加它,是因为两个原因(1)我觉得初始化变量总是一个好主意(2)第二个原因是我没有测试它,但当窗体第二次初始化时,它可能会得到旧值n(在某些语言中确实会发生这种情况)非常感谢Usmanhaq的观点,在0处进行初始化似乎效果更好…关于打开的新工作簿,您是对的,如果我在userform仍然打开时打开一个新工作簿,它不会自动添加到列表框中(换句话说,我的列表框不是动态的)。在这种情况下,我必须关闭userform并重新打开它,然后才能看到新工作簿在我的列表框中打开。
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