【问题标题】:Userform to navigate and select another open workbook用户窗体导航并选择另一个打开的工作簿
【发布时间】:2019-03-09 22:14:37
【问题描述】:

我有一个小程序 VBA,它实际上是一个用户表单,它允许我显示我正在处理的一个打开的工作簿的所有现有工作表。通过这个用户窗体,我可以选择另一个工作表,并通过这个用户窗体单击工作表,它将我重新定向到所需的工作表。 现在我尝试修改这个程序的一部分,以便在我所有打开的工作簿中做同样的事情。这意味着如果我打开了几个工作簿,我希望我的用户窗体允许我显示所有现有的打开工作簿,并通过用户窗体选择所需的工作簿,它将我重新定向到这个工作簿(这意味着用户窗体中的选定工作簿被激活并被选中)。问题是当我运行代码时,出现错误消息 424 VBA Run-time error '424' Object Required Error...

PS:对于我的代码格式真的很抱歉,但我没有设法把它放在正确的格式..

提前感谢您的帮助 哈维

请在此处找到适用于与工作表相关的用户表单的原始代码(这个有效):

Sub UserForm_Initialize()
    Dim n As Long
    Dim msg As String
    Dim i As Long
    Dim s As String
    Dim sht As Worksheet

    Do
        n = n + 1
        Me.ListBox1.AddItem Sheets(n).Name
    Loop Until n = Worksheets.Count

End Sub

请在此处找到与工作簿相关的用户表单的修改代码(这个不起作用:运行时错误424):

Sub UserForm_Initialize()
    Dim n As Long
    Dim msg As String
    Dim i As Long
    Dim s As String
    Dim Wb As Workbook

    Do
        n = n + 1
        Me.ListBox1.AddItem Workbooks(n).Name
    Loop Until n = Worksbooks.Count

End Sub

【问题讨论】:

  • 你在结束循环语句中有错字,应该如下:Loop Until n = Workbooks.Count(而不是“Worksbooks”)。
  • 非常感谢,这正是我要找的...

标签: vba excel userform


【解决方案1】:

如果没有理由在您的代码中解析实际数字,那么为什么不直接循环工作表呢?

Sub UserForm_Initialize()
    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Worksheets
        Me.ListBox1.AddItem ws.Name
    Next ws

End Sub

【讨论】:

  • Dim Wb As Workbook? ThisWorkbook.Worksheets 中没有工作簿。使用Dim Ws As WorksheetsFor Each Ws In ThisWorkbook.Worksheets,或者如果您想循环浏览工作簿,请使用For Each Wb In Workbooks
  • 半睡半醒,错过了。我会解决的
【解决方案2】:

我可以提出一个简单的 for 循环吗?

Dim i As Long
For i = 1 To Application.Workbooks.Count
    Debug.Print Application.Workbooks(i).Name
Next

然后,如果您有不同的 Excel 实例(不同的 Application 对象,然后是您的 Userform 来自的那个),这会变得有点复杂。 (如果您在 Excel 2010 或更高版本中工作,则可能不是这种情况)。但是,如果是这种情况,则需要调用几个 Win32 API 以及对 Excel 的“窗口”有一些了解。我过去在这里找到了答案:Can VBA Reach Across Instances of Excel?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 2013-08-16
    • 1970-01-01
    • 2015-07-24
    • 1970-01-01
    相关资源
    最近更新 更多