【发布时间】:2017-04-13 19:21:35
【问题描述】:
在我的宏中,我有以下代码:
Set v = Application.WorksheetFunction.Index(Worksheets("Sheet2").Range(Cells(2, 1), Cells(33, 3)), Application.WorksheetFunction.Match(1, (Worksheets("Sheet2").Range(Cells(2, 1), Cells(33, 1)) = Osheet.Cells(i, 2).Value) * (Worksheets("Sheet2").Range(Cells(2, 2), Cells(33, 2)) = Left(Osheet.Cells(5, 6).Value, 1)), 0), 3)
数据最初位于表 1(这是代码中使用的 Osheet),从中选择了 2 个参数并使用索引匹配函数从表 2 中获取数据。
运行宏时,显示运行时错误 1004、应用程序定义或对象定义错误。
任何帮助将不胜感激。
【问题讨论】:
-
没有数据示例,我无法重现您的问题。但是,除了正确限定范围引用之外,正如@Vityata 所指出的,我不清楚您的公式是否返回一个对象,但您正在使用
Set。此外,您的公式中有一些布尔比较。他们在做什么? -
@RonRosenfeld 表 2 包含以下数据 Farbe 尺寸 SKU 代码 weiß S 5671 weiß M 5672 weiß L 5673 weiß XL 5674 表 1 包含选定产品的订单数量。因此,此代码的目标是找到相应的 SKU 代码(来自 Sheet2),其中在工作表 1 中有相应的订单记录。此 SKU 代码被传递给 Set v = & 然后进一步的 v 被发送到另一个工作表以进行其他流程.希望我在这里有意义。如果您理解我的问题,请提供帮助。
-
正如我所写的,如果没有可以下载到 Excel 中的数据,我什至不会尝试重现您的问题。但是
Set关键字用于对象。 SKU 代码通常是字符串变量,我不确定您的公式返回的是什么,但其中一部分正在生成布尔值。 -
尝试解释如何可能重现问题,否则它似乎是调试代码的问题..
-
除了不合格的
Cells之外,看起来问题是因为我认为VBA无法处理的数组操作(例如Range(Cells(2, 1), Cells(33, 1)) = Osheet.Cells(i, 2).Value)。