运行时错误“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 =行,这里有两件事:

  1. Range("A:A"...应改为Range("A"...因为您正在指定一行,而不是从整个工作表的顶部到底部select整个列。
  2. 可以使用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一次,而不是多次。