我想使用循环( for
)和条件( if elseif else
)将数据从一个工作表复制到另一个工作表。条件:
但是 Else 子句中的代码会触发错误:
Run-time error '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
最佳答案
您实际上会在每行使用 wsDest.Range
得到这个错误。因为您没有为 .End(xlUp)
定义行号开始,因此错误 1004
.
如果您要查找指定列中的最后一行,请尝试添加 & Rows.Count
到您要指定的范围。
wsDest.Range("M" & Rows.Count).End(xlUp).Offset(1, 0)
关于excel - 这是我的逻辑还是我写的语法错误? (if else 语法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54293464/