运行时错误“1004”循环大量样本的行时
为了实现最有效的方式来循环大量的行样本,我在Sheet3中创build了以下代码:
Sub Testing_Data() Dim k As Long, S2 As Worksheet, VArray Application.ScreenUpdating = False Set S2 = ThisWorkbook.Sheets("Sheet2") VArray = Range("A:A" & Cells(Rows.Count, "A").End(xlUp).Row).Value For k = 2 To UBound(VArray, 1) S2.Cells(k, "B") = VArray(k, 1) / 100 S2.Cells(k, "C") = VArray(k, 1) * S2.Cells(k, "B") Next End Sub
运行代码后, 运行时错误“1004”:发生应用程序定义或对象定义的错误 。 如何解决它?
通过你的代码后,错误是在VArray =
行,这里有两件事:
-
Range("A:A"...
应改为Range("A"...
因为您正在指定一行,而不是从整个工作表的顶部到底部select整个列。 - 可以使用
Range(FirstCell, LastCell)
来引用多个后续单元格的Range(FirstCell, LastCell)
。 你的代码只select底部的单元格,所以通过添加"A1",
在你的范围参考的开始,它将select你需要的所有单元格。
Sub Testing_Data() Dim S2 As Worksheet, VArray() As Variant Application.ScreenUpdating = False Set S2 = ThisWorkbook.Sheets("Sheet2") VArray = Range("A1", "A" & Cells(Rows.Count, "A").End(xlUp).Row) For k = 2 To UBound(VArray) S2.Cells(k, "B") = VArray(k, 1) / 100 S2.Cells(k, "C") = VArray(k, 1) * S2.Cells(k, "B") Next End Sub
user1016274是正确的,你需要为你的范围和单元格添加S2
VArray = S2.Range("A:A" & S2.Cells(Rows.Count, "A").End(xlUp).Row).Value
或者按照他的build议:
With S2 VArray = .Range("A:A" & .Cells(Rows.Count, "A").End(xlUp).Row).Value End With
这是非常有用的。 当你有多个表格时,它节省了时间和空间。
另一个错误是在你的Range
。你必须定义由逗号分开的2个单元格,在这里你定义了列A和由&
分隔的最后一行的单元格。 尝试这个:
VArray = Range(S2.Cells(1, 1), S2.Cells(Rows.Count, "A").End(xlUp))
编辑:当我运行这个,它适用于我:
Sub Testing_Data() Dim k As Long, S2 As Worksheet, VArray Application.ScreenUpdating = False Set S2 = ThisWorkbook.Sheets("Sheet2") VArray = Range(S2.Cells(1, 1), S2.Cells(Rows.Count, "A").End(xlUp)).Value For k = 2 To UBound(VArray, 1) S2.Cells(k, "B") = VArray(k, 1) / 100 S2.Cells(k, "C") = VArray(k, 1) * S2.Cells(k, "B") Next End Sub
VArray = Range("A:A" & Cells(Rows.Count, "A").End(xlUp).Row).Value
不是引用Sheet2
而是当前显示的工作表。 使用
With S2 VArray = .Range("A1:A" & .Cells(Rows.Count, "A").End(xlUp).Row).Value End With
注意从“A:A”到“A 1 :A”的变化。 Range
对象需要一个由冒号分隔的开始单元格和结束单元格引用。
出于性能原因,您还应该将以下语句放入With
块中。 这样,对工作表的引用将只被search一次,而不是多次。