Скопируйте и вставьте всю строку автоматически с VBA (Excel) - PullRequest
0 голосов
/ 25 января 2019
Sheets("Source").Select
Rows("1:1").Select
Selection.Copy
Sheets("Print").Select
Rows("1:1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

Sheets("Source").Select
Rows("2:2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Print").Select
Rows("1:1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

Итак, это пример кода. Я хочу скопировать каждую строку из Source Лист и вставить в 1:1 строки в Print Лист автоматически.

Диапазон меняется каждый раз. Было бы здорово, если код работает как номер строки.

[2-й вопрос] Хорошо, теперь у меня новая проблема. После выполнения кода Excel зависает.

вот новый код.

Dim i As Long 'i - Number of rows in Source list
NumRows = Range("A1", Range("A1").End(xlDown)).Rows.Count
For i = 1 To NumRows
    Worksheets("Source").Rows(i).Copy
    Worksheets("Print").Rows("1:1").PasteSpecial Paste:=xlPasteValues
    Worksheets("Print").PrintOut Copies:=1, Collate:=True, _
            IgnorePrintAreas:=False
Next

Ответы [ 3 ]

0 голосов
/ 25 января 2019

Если я правильно вас понял, вы должны использовать такую ​​конструкцию:

Dim i as long 'i - Number of rows in Source list
i = 100 'for example
Worksheets("Source").Rows("1:" & i).Copy 
Worksheets("Print").Rows("1:1").PasteSpecial Paste:=xlPasteValues
0 голосов
/ 25 января 2019

Предположим, что Исходный лист структура, подобная изображению ниже:

enter image description here

и Печать листа пуста.

Вы можете попробовать:

Option Explicit

Sub test()

    Dim wsSource As Worksheet, wsPrint As Worksheet
    Dim rngCopy As Range
    Dim LastRow As Long, LastColumn As Long

    Set wsSource = ThisWorkbook.Worksheets("Source")
    Set wsPrint = ThisWorkbook.Worksheets("Print")

    With wsSource

        'Find last row of column A
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        'Find last column or row 1
        LastColumn = .Cells(1, .Columns.Count).End(xlToLeft).Column
        'Set range to copy
        Set rngCopy = .Range(.Cells(2, 1), .Cells(LastRow, LastColumn))

    End With

    rngCopy.Copy wsPrint.Range("A1")

End Sub

Результат:

enter image description here

0 голосов
/ 25 января 2019

Вы можете использовать последовательность цикла FOR, но я не уверен, что вы хотите с программой.Не могли бы вы поделиться более подробной информацией об этом?

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