【问题标题】:Excel VBA Sheets(Array()).Select Subscript out of rangeExcel VBA Sheets(Array()).Select Subscript out of range
【发布时间】:2015-11-19 00:54:45
【问题描述】:

Excel VBA 中的这一小段代码有点问题。

我要做的就是在工作簿中选择多张工作表并将它们导出为一个 PDF。 我有很多不想隐藏或移动的表格,所以在我的代码前面,我循环并将特定名称保存在一个数组中。我遇到了这个错误,所以我想我会简单地对他们的名字进行硬编码,看看是否有效。

但即使使用硬编码的名称,我也会收到“下标超出范围错误”,所以肯定有其他问题。

wb.Sheets(Array("Sheet 1", "Sheet 2", "Sheet 3", "Sheet 4", "Sheet 5")).Select

Selection.ExportAsFixedFormat Type:=xlTypePDF, _ ............

是否存在与上述声明相关的任何已知错误? (我只包含了前 2 行,因为它不会在第一行之后执行) 或者有什么建议可以阻止这个错误的发生?

注意:我已更改工作表名称,因为它们与敏感数据相关。然而,一个例子是“S&C vendor1

【问题讨论】:

  • 您确定您的wb 参考指向正确的工作簿吗?这种语法对我来说很好。
  • 是的,Set wb = xl.Workbooks.Open(F.Path) 我也在遍历许多工作簿,但我在代码的许多其他部分都引用了 wb,它们执行得很好。跨度>
  • 那么可能还有另一条我们无权访问的信息解释了问题。尝试逐一删除工作表名称,直到错误消失。
  • 也许直接用工作表的名称填充数组,而不是手动输入名称。 wb.sheets(1).Name 例如用于第一个工作表,依此类推。

标签: arrays vba excel subscript


【解决方案1】:

确保正确拼写工作表名称:

Sub dural()
   Set wb = ActiveWorkbook
   wb.Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
End Sub

默认工作表名称中没有空格。

【讨论】:

  • 对不起,我应该说,我已经更改了工作表名称,因为它们与可能的敏感数据相关。话虽如此,实际的工作表名称中确实有空格,这会以某种方式影响它吗?
  • 错误是在Select还是在Export??跨度>
  • 选择,我只是包含了导出行来显示我将如何处理选择。
  • 这很可能是因为至少有一个工作表名称(在数组中)在该工作簿中不存在或拼写错误。
【解决方案2】:

感谢大家的帮助。事实证明,我不小心把它放在了一个循环中,并且一定是多次选择然后跑出了范围。

感谢所有的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-10
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 2019-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多