excel vba:范围xldown始终至少复制3行

excel vba:范围xldown始终至少复制3行,excel,vba,Excel,Vba,我对xldown有一些疯狂的问题 我希望它复制一个变化的范围(可以有0个条目、1个条目或10个条目。因此,我使用Find和RngA.offset(1,4)引用起始位置,并希望该范围一直移动,直到它找到一个空单元格。如果至少有3行数据(例如,如果有4行,然后是空白,它将只复制4行数据),这似乎是可行的但是,如果有3个或更少,它复制所有3个(例如,如果在行1和3中有数据,但是在行2中没有数据,那么它应该只复制行1,因为行2是空的,但是它复制1-3,行中的空格2)。我希望这是有意义的。有人能帮助吗?

我对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

这是正常的。按照您的示例,“选择”已经在您调用
xldown
之前的最后一行

只需在前面添加一个
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

空格是公式的结果吗?还是单元格真的是空白的?他们真的是空白的,我已经检查过了,谢谢你的回答,但我不确定我是否理解。我是vba新手。如果范围从RngA.offset(1,4)开始,为什么它会自动填充3行?-例如,如果Rng.offset(2,4)是空白的,它应该只复制(1,4)对吗?在第一条注释中:它只是一个验证第二个单元格是否为空的
if
语句。这样,它会处理异常。在第二条注释中:否,因为您有
.End(xlDown)
。此命令意味着,它至少会抓取下面的一个单元格,直到找到另一个空单元格。让我相应地编辑我的答案。@spaindc请参阅我的Edit1