我对xldown有一些疯狂的问题。
我希望它复制一个变化的范围(可能有0个条目,1个条目或10个条目。所以我用Find和RngA.offset(1,4)引用起始位置,我想要范围去直到它找到一个空单元格。如果有至少3行数据(例如,如果有4行然后是空白,它将仅复制4),这似乎有效,但如果有3或更少,则复制全部3(例如,如果第1行和第3行中有数据,但第2行没有数据,则应仅复制第1行,因为第2行为空。但是它复制1-3,第2行中有空白。)我希望这是有道理的。有人可以帮忙吗?
Sub SubmitData()
Dim RngA As Range
With Sheets("Review").Range("A:A")
Set RngA = .Find(what:="TOR Design Checklist", lookat:=xlWhole)
Range(RngA.Offset(1, 4), RngA.Offset(1, 4).End(xlDown)).Copy _
Destination:=Sheets("Field_Phase 1").Range("H7")
End With
End Sub
答案 0 :(得分:1)
这很正常。按照您的例子,“select”已经在调用xldown
之前的最后一行。
只需在其前面添加if
语句即可处理此独特案例。
if {Range under your selected range} = "" then
' Only copy the 1 range
else
' Do as usual
End if
适合您的问题:
我认为它应该有效。评论,如果没有。
Sub SubmitData()
Dim RngA As Range
With Sheets("Review").Range("A:A")
Set RngA = .Find(what:="TOR Design Checklist", lookat:=xlWhole)
If RngA.offset(2,4).value = "" then
' Only copy the 1 range
Range(RngA.Offset(1, 4),RngA.Offset(1, 4)).Copy _
Destination:=Sheets("Field_Phase 1").Range("H7")
else
' Do as usual
Range(RngA.Offset(1, 4), RngA.Offset(1, 4).End(xlDown)).Copy _
Destination:=Sheets("Field_Phase 1").Range("H7")
End if
End With
End Sub