我想使用循环(for
)和条件(if elseif else
)将数据从一个工作表复制到另一工作表。条件:
但是Else子句中的代码会触发错误:
运行时错误'1004'
我试图激活工作表,但仍然卡住了。谁能解释为什么我的源代码不起作用?是我的逻辑还是语法不正确?
For i = 1 To lCopyLastRow
If IsEmpty(wsCopy.Range("E" & 9 + i).Value) = True Then
For s = 4 To b
If (wsCopy.Range("B" & 9 + i).Value = wsDestI.Range("G" & s).Value) Then
wsDestI.Range("C" & s).copy wsDest.Range("M").End(xlUp).Offset(1, 0)
wsDestI.Range("G" & s).copy wsDest.Range("S").End(xlUp).Offset(1, 0)
wsDestI.Range("M" & s).copy wsDest.Range("P").End(xlUp).Offset(1, 0)
End If
Next s
ElseIf IsEmpty(wsCopy.Range("B" & 9 + i).Value) = True Then
wsCopy.Range("E" & i + 9).copy wsDest.Range("M").End(xlUp).Offset(1, 0)
wsCopy.Range("K" & 9 + i).copy wsDest.Range("P").End(xlUp).Offset(1, 0)
wsDest.Range("S").End(xlUp).Offset(1, 0) = "0"
Else:
wsCopy.Activate
wsDest.Activate
'this below line is error and I don't know why its error
wsCopy.Range("E" & 9 + i).copy wsDest.Range("M").End(xlUp).Offset(1, 0)
wsCopy.Range("B" & 9 + i).copy wsDest.Range("S").End(xlUp).Offset(1, 0)
wsCopy.Range("K" & 9 + i).copy wsDest.Range("P").End(xlUp).Offset(1, 0)
End If
Next i
答案 0 :(得分:4)
实际上,在wsDest.Range
的每一行都会出现此错误,因为您没有为.End(xlUp)
定义行号,因此错误为1004
。
如果您要查找指定列的最后一行,请尝试在要指定的范围内添加& Rows.Count
。
wsDest.Range("M" & Rows.Count).End(xlUp).Offset(1, 0)