Форма ввода, Excel, VBA для копирования входных данных и вставки в другой лист - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь сократить использование .select и .paste при попытке выполнить копирование и вставку.Я знаю, что использовать петли намного проще.Я пытаюсь скопировать диапазон ячеек из моего рабочего листа "Entry" и вставить его в рабочий лист с именем "input".Проблема, с которой я сталкиваюсь, заключается в том, что я хочу вставить данные в последовательные ячейки.

Вот что у меня есть:

Dim i as Byte, y as Byte, x as integer 

For i = 3 to 3 
    For y = 3 to 17
      x = x +1 

      Sheets("input").Cells(29,x).value = Sheets("Entry").Cells(y,i).value

     Next y 
Next i

Скопированные ячейки имеют пустую ячейку между ними, например:

Entry Cells that are copied

Когда я вставляю их на вкладку «Ввод» в нужном диапазоне, она вставляется следующим образом:

Input Paste

Я пытаюсь сделать так, чтобы при вставкеон последовательно вставляется в «входной» лист, например:

Consecutive Cells

1 Ответ

0 голосов
/ 12 февраля 2019

Да, вы правы, что, как правило, рекомендуется избегать. Выберите и. Вставьте в код VBA, так как они обрабатываются дольше и обычно не нужны.В вашем случае может быть проще использовать цикл for, который просматривает диапазон ячеек и копирует их на другой лист.Это позволяет проверить, содержит ли ячейка что-либо, и если она ничего не содержит, ее можно пропустить.Это пример:

Sub CopyCells()

    Dim rng As Range, cell As Range, copyToCell As Range

    Set rng = ThisWorkbook.Sheets("Entry").Range("A1:A10") 'This is the range you want to copy from
    Set copyToCell = ThisWorkbook.Sheets("inputs").Range("A1") 'This is the first cell in the range you want to copy to

    For Each cell In rng
        If cell.Value <> "" Then 'Only copy from cells that are not blank
            copyToCell.Value = cell.Value
            Set copyToCell = copyToCell.Offset(0, 1) 'Move the copy to cell over by one column (or by row if you prefer)
        End If
    Next cell

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