VBA: ЕСЛИ условия не признаются - PullRequest
0 голосов
/ 18 марта 2019

Хотите сделать:

A.Если в листе данных есть только одна строка, скопируйте и вставьте этот одиночный ряд и вставьте его в именованный лист

B.Если естьнесколько строк данных, скопируйте все, затем вставьте

Проблемы, связанные с текущим кодом: он игнорирует первое условие if и переходит прямо к следующему, которое копирует диапазон и все ниже, даже если присутствует только одна строка данных.

вот мой код со следующими условиями:

ws2 = исходная таблица данных

wsA = данные листа будут вставлены в

скопированные данные, если условиявстречаются должны быть вставлены в последнюю доступную пустую строку в столбце A WSA

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

лист данных

1 Ответ

0 голосов
/ 18 марта 2019

Если нет данных ниже строки 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

И, возглавьте совет, чтобы избежать выбора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...