回答

回答

答案在帖子底部

我让下面的代码运行起来,但还有一个问题。当我将代码复制并粘贴到我的项目中时,它不起作用。但从下拉菜单中插入调用的大纲并将其余部分粘贴到其正文中就可以正常工作。那么新的问题是:Excel 到底在背着我做什么来让它工作?


我试图在 Excel 2010/2013 的组合框中选择所有打开的工作簿。网上有很多解决方案(或多或少都是一样的)。但似乎没有一个对我有用。我尝试过:

Private Sub UserForm1_Initialize()
    Dim wkb As Workbook
    For Each wkb In Application.Workbooks
        ComboBox1.AddItem wkb.Name
    Next wkb
End Sub

或者

Private Sub Userform1_Initialize()
    Dim wkb As Workbook
    With Me.ComboBox1
        For Each wkb In Application.Workbooks
            AddItem wkb.Name
        Next wkb
    End With
End Sub

文件保存为 xlsm,两个元素确实被称为UserForm1ComboBox1。我需要关闭某种安全选项吗? UserForm 被调用,但列表为空。

编辑1:在 MsgBox 中列出工作簿是可行的。因此,add 方法一定存在问题。

Sub ListOpenBooks()
'lists each book that's OPEN
    Dim wkb As Workbook
    For Each wkb In Application.Workbooks
          MsgBox wkb.Name
    Next wkb
End Sub

编辑2:在 UserForm 上的按钮中使用相同的代码也是可行的。因此,当调用 UserForm 时,它必须是 Initialize 方法。

回答

好吧,只是误会。在 UserForm 的代码段中,您不需要它的名称来初始化。一个简单的Private Sub UserForm_Initialize()就足够了。您可以完全忽略它的名称。

答案1

好吧,只是误会。在用户窗体的代码段中,您不需要它的名称来初始化。一个简单的Private Sub UserForm_Initialize()就足够了。您可以完全忽略它的名称。

相关内容