VBA:如果无法识别条件

时间:2019-03-18 09:58:10

标签: excel vba

想做:

A。如果数据表中仅存在一行,请复制并粘贴该单行并将其粘贴到命名表中

B。如果有多行数据,请复制所有内容然后粘贴

具有当前代码的问题: 它会忽略第一个if条件,而直接转到下一个条件,即使存在一行数据,它也会复制范围和下面的所有内容。

这是我的代码,具有以下条件:

ws2 =源数据表

wsA =将粘贴工作表数据

如果满足条件,则应将复制的数据粘贴到WsA的A列中最后一个可用的空白行上

k = ws2.Range("a6", ws2.Range("a6").End(xlDown)).Rows.Count

If k <= 1 Then

    ws2.Activate
    rngB.Select
    Selection.Copy
    wb2.Activate
    wsA.Activate
    Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False

Else
    ws2.Activate
    rngB.Select
    Range(rngB, ActiveCell.End(xlDown)).Select
    Selection.Copy

    wb2.Activate
    wsA.Activate
    Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False


End If

data sheet

1 个答案:

答案 0 :(得分:0)

如果第6行下方没有数据,则ws2.Range("a6").End(xlDown)将向下延伸到工作表的底部(因此k>〜1000000)

要检测是否仅存在一行数据,请尝试

If IsEmpty(ws2.Range("a6").Offset(1,0) then
    ' Only one row
Else
    ' More than one row
End If

而且,建议您避免选择。