excel vba:范围xldown总是复制至less3行

我有一些与xldown疯狂的问题。

我希望它复制的范围会有所不同(可能有0个条目,1个条目或10个条目,所以我使用Find和RngA.offset(1,4)来引用起始位置,我希望范围一直到find如果有至less3行数据(例如,如果有4个,然后一个空白,它将只复制4个),这似乎工作,但如果有3个或更less,它复制全部3(例如,如果第一行和第三行有数据,但是第二行没有数据,则只复制第一行,因为第二行是空白的,而第三行是空白的,第二行是空白的)我希望这是有意义的任何人都可以帮忙吗?

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 

这个是正常的。 遵循你的例子,在你调用xldown之前,“select”已经在最后一行了。

只要在它之前添加一个if语句来处理这个独特的情况。

 if {Range under your selected range} = "" then ' Only copy the 1 range else ' Do as usual End if 

编辑1

适合你的问题:

我认为它应该工作。 如果不是,请留言。

 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