Нужен код для копирования и вставки определенных значений из выбранных строк таблицы на листе в ячейки таблицы на другом - PullRequest
0 голосов
/ 23 сентября 2019

Я ищу код vba для копирования и вставки определенных значений столбцов из выбранных строк таблицы в поля другой таблицы.

Я пробовал следующий код, который успешно передает данные по мере необходимости, но я бы предпочел использовать заголовки таблиц, а не ссылки на столбцы, и он копирует некоторые формулы и форматирование, когда мне просто нужны значения.

По сути, я хочу заполнить шаблон формы данными выбранных строк:

  Dim wsSrc As Worksheet
    Set wsSrc = ThisWorkbook.Worksheets("CONSIGNMENT REGISTER")

    Dim wsDest As Worksheet
    Set wsDest = ThisWorkbook.Worksheets("DEFFERED WORK FORM")

    Dim DestRow As Long
    DestRow = 9

    Dim Rng As Range
    For Each Rng In Selection.Areas
        Rng.Resize(, 1).Offset(, -16).Copy Destination:=wsDest.Cells(DestRow, "B")
        Rng.Resize(, 1).Offset(, -18).Copy Destination:=wsDest.Cells(DestRow, "C")
        Rng.Resize(, 1).Offset(, -20).Copy Destination:=wsDest.Cells(DestRow, "D")
        Rng.Resize(, 1).Offset(, -19).Copy Destination:=wsDest.Cells(DestRow, "E")
        Rng.Resize(, 1).Offset(, -17).Copy Destination:=wsDest.Cells(DestRow, "F")
        Rng.Resize(, 1).Offset(, -15).Copy Destination:=wsDest.Cells(DestRow, "G")
        Rng.Resize(, 1).Offset(, -14).Copy Destination:=wsDest.Cells(DestRow, "H")
        Rng.Resize(, 1).Offset(, -13).Copy Destination:=wsDest.Cells(DestRow, "I")
        Rng.Resize(, 1).Offset(, -12).Copy Destination:=wsDest.Cells(DestRow, "J")
        Rng.Resize(, 1).Offset(, -10).Copy Destination:=wsDest.Cells(DestRow, "K")
        Rng.Resize(, 1).Offset(, -11).Copy Destination:=wsDest.Cells(DestRow, "L")
        Rng.Resize(, 1).Offset(, -21).Copy Destination:=wsDest.Cells(DestRow, "M")
        Rng.Resize(, 1).Offset(, -1).Copy Destination:=wsDest.Cells(DestRow, "N")
        Rng.Resize(, 1).Offset(, -2).Copy Destination:=wsDest.Cells(DestRow, "O")
        Rng.Resize(, 1).Offset(, -5).Copy Destination:=wsDest.Cells(DestRow, "P")
        Rng.Resize(, 1).Offset(, -4).Copy Destination:=wsDest.Cells(DestRow, "Q")
        Rng.Resize(, 1).Offset(, -3).Copy Destination:=wsDest.Cells(DestRow, "R")
        DestRow = DestRow + Rng.Rows.Count
    Next Rng

End Sub

Я включил столбец «Подсветка» в первой таблице, чтобы пользователь мог выбрать строки икомандная кнопка для создания формы.

Я объединю его с модулем, чтобы отобразить шаблон формы, вставлю эти данные, скопирую шаблон на новую вкладку в новой книге (для индивидуального сохранения), верну шаблон пустым и снова скрою...

разве есть гораздо более простой способ сделать то, что мне нужно?

1 Ответ

0 голосов
/ 23 сентября 2019

Чтобы скопировать только значение (без форматирования, формул и прочего ...) интересующей вас ячейки:

вместо этого:

Rng.Resize(, 1).Offset(, -16).Copy Destination:=wsDest.Cells(DestRow, "B")

, вы можете просто попробовать это:

wsDest.Cells(DestRow, "B").Value = Rng.Resize(, 1).Offset(, -16).Value

... и, конечно, повторить это на всех других строках ...

Это ваш первый вопрос ....

Оrest:

Не видя, что именно вы делаете, я не уверен, что смогу прокомментировать, если есть более простой способ сбора данных и заполнения шаблона.

Вы можете спросить об этом вдобавлен отдельный вопрос со скриншотами.

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