尝试访问工作表范围时VBA运行时错误1004

时间:2015-08-20 22:36:23

标签: excel vba excel-vba range runtime-error

我正在构建一个小的vba脚本,它将来自多个工作簿的表合并到另一个工作簿的单个工作表中。当我尝试设置目标范围的值时会引发错误:

wksPivotData.Range(wksPivotData.Cells(CurrentRow, 1)).Resize(tbl.ListRows.Count, tbl.ListColumns.Count).Value = _
    tbl.Range.Value

错误:“运行时错误'1004':应用程序定义或对象定义错误”

我经历了类似的问题,一般答案就是我在this one中找到的:所选单元属于另一个工作表,而不是所需的工作表。

虽然这完全有道理,但我仍然无法弄清楚为什么我的代码会中断,因为我只使用数字引用(CurrentRow是一个长)和Resize,这应该阻止我做这样的错误。

此外,我在立即窗口中运行了几个快速测试,结果表明虽然工作表wksPivotData存在且我可以访问其名称和单元格值,但范围函数根本不起作用:< / p>

Debug.Print wksPivotData.Name
    PivotData

Debug.Print wksPivotData.Cells(1, 1).Value
    123

这两项都有效,但下一次没有:

Debug.Print wksPivotData.Range(1, 1).Value

1 个答案:

答案 0 :(得分:3)

您的最后一行>>> Decimal('1.695').quantize(Decimal('.01'), rounding=ROUND_HALF_UP) Decimal('1.70') 因为您误导Debug.Print wksPivotData.Range(1, 1).Value而无法打印。我想你想要A1?

使用Range()时,您指的是不存在的范围。如果你想做单元格A1,你需要

Range(1,1)

由于您正在使用多个工作表,因此我使用上述With wksPivotData myData = .Range(.Cells(1,1),.Cells(1,1)).Value End with 语句。编写相同内容的另一种方法是with(在使用wksPivotData.Range(wksPivotData.Cells(1,1),wksPivotData.Cells(1,1))Range()时,您需要明确告诉Excel要引用的工作表。

最后,对于你的调整大小,如果我没记错的话,你必须在你的范围内两次添加相同的cells()

Cell()

或者,对于同样的事情,但不同的方式:

wksPivotData.Range(wksPivotData.Cells(CurrentRow, 1),ksPivotData.Cells(CurrentRow, 1)).Resize(tbl.ListRows.Count, tbl.ListColumns.Count).Value = _
    tbl.Range.Value
相关问题