【问题标题】:Subscript out of range - depending on user下标超出范围 - 取决于用户
【发布时间】:2014-09-16 04:10:55
【问题描述】:

我有一个包含多个宏的 excel 工作簿,其中 4 个是“设置”宏,用于将信息写入某些单元格,而最终的“工具”宏是在运行时引用其他宏写入的单元格的宏.

“工具”宏工作正常。问题出在“设置”宏中。

有 2 种不同的“设置”宏,其中 2 个打开文件资源管理器,以便用户可以选择“源”和“目标”文档,然后将文件的路径打印到各自的单元格中,而另外两个打开“源”文档,以便用户可以突出显示他们想要复制的单元格。

整个过程一直运行良好,直到我的一位同事找到我并说他们在尝试运行 2 个“设置”宏来打印单元格的范围和位置时遇到了错误。

All 4 "Settings" macro codes are here.

出现问题的两个宏是 ChangeDataWithLoopHeaderLocationsWithLoop

错误出现在两个宏的同一行代码中。

    SrcPath = Workbooks("Data Tool 2").Worksheets("Data Tool Settings").Cells(6, 3).Value

错误是#9

下标超出范围。

到目前为止,我无法在我的机器上重现该错误,但另一位同事登录另一台机器时重复了该错误。

我完全被难住了。请帮忙!

其他信息:

  • 包含所有 5 个宏的工作簿的名称是“数据工具 2”,它位于网络驱动器上。
  • 带有设置的工作表的名称是“数据工具设置”
  • 我被列为该文档的作者。 (不确定是否重要)
  • 文档不受保护。

【问题讨论】:

  • 只有在工作簿名称或工作表名称无效时才会发生这种情况。一方面,我总是使用工作簿的全名(带扩展名),例如Data Tool 2.xls。我会用一些辅助函数一一测试这些,例如pastebin.com/MYadsMgw
  • 我可以通过将“Workbooks("Data Tool 2").Worksheets”更改为简单的表格来修复它。不过感谢您的帮助!

标签: vba excel


【解决方案1】:

将“Workbooks("Data Tool 2").Worksheets”更改为 Sheets。工作正常 - 在多台机器/用户 ID 上多次测试。

【讨论】:

    【解决方案2】:

    几件事:

    1) 检查所有用户的文件扩展名是否显示在文件夹选项下(即 Data Tool 2.xlsm)
    2) 尝试删除工作簿/工作表名称上的空格以避免隐藏的 ascii 字符
    3) 检查专用单元格值。它是否包含一些所有人都无法阅读的字符? (即特定于一种语言)

    【讨论】:

    • 无论出于何种原因,将“Workbooks("Data Tool 2").Worksheets”更改为“Sheets”都有效。不过感谢您的帮助!
    • @Reamithey 很高兴为您提供帮助~ 更改为“Sheet”作品的原因是它避免具体说明哪个 workbokk 的工作表,并使用您前面的代码引用的任何工作簿。这也可以得出结论,错误来自工作簿(“数据工具 2”)
    猜你喜欢
    • 2015-06-02
    • 2021-05-02
    • 2015-05-27
    • 2021-09-18
    • 2012-04-28
    • 2017-01-18
    • 2021-12-22
    • 1970-01-01
    相关资源
    最近更新 更多