【问题标题】:Getting "subscript out of range" error from "Find" result从“查找”结果中获取“下标超出范围”错误
【发布时间】:2015-10-16 00:48:00
【问题描述】:

我想在 Excel 工作表中查找一个字符串。 Excel 单元格值是使用公式计算的。当我运行这段代码时:

Set firstExcel = CreateObject("Excel.application")
firstExcel.Workbooks.Open "C:\Myroute\excelName.xls"
Set oSht = firstExcel.Worksheets("Input Data")
str="hello"
Set aCell = oSht.Range("A1:E15").Find(str, , xlValues)
MsgBox aCell.row

我有一个错误提示:

错误:下标超出范围
代码:800A0009

【问题讨论】:

    标签: excel vbscript


    【解决方案1】:

    您在.Find 行收到错误消息的原因是vbscript 无法识别Excels 常量,因此您需要将xlValues 替换为数字-4163。 (所有 Excel 常量值都可以在 VBA 对象浏览器中找到)。

    此外,您编写的行 Set oSht = firstExcel.Worksheets("Input Data") 对 VB 没有意义,因为 firstExcel 是 Excel 应用程序本身,并且没有与 Excel 应用程序本身关联的 Worksheet 对象,但是有在 Workbook 对象中。

    Set firstExcel = CreateObject("Excel.application")
    Set wkb = firstExcel.Workbooks.Open("C:\Myroute\excelName.xls")
    Set oSht = wkb.Worksheets("Input Data")
    str="hello"
    Set aCell = oSht.Range("A1:E15").Find(str,,-4163)
    If Not aCell is Nothing Then MsgBox aCell.row 'because if it does not find the string, it will not return a range object
    

    此外,您可以在代码顶部声明一个常量,并在 .Find 语句中使用该常量。

    const xlValues = -4163
    .Find(str,,xlValues)
    

    【讨论】:

    • 当我将代码更改为您的代码时,我收到一个新错误:预期语句结束,行中:Set wkb = firstExcel.Workbooks.Open "C:\Myroute\excelName.xls"
    • 对不起,在声明中忘记了括号。请查看我的编辑并重试。
    • 对不起,我试过了,但使用 Find 方法时仍然出现这个奇怪的错误。还是谢谢。
    • 您是否按照我编写的确切方式将代码复制到您的文件中?另外,您现在遇到的 strange 错误是什么?
    • 是的,我复制了它完全就像你写的一样。错误仍然是同一个:下标超出范围(在第 5 行使用 Find 方法时 - 在我在问题中添加的代码束中)
    猜你喜欢
    • 2016-02-13
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多