EXCEL VBA Попытка скопировать данные из непоследовательных ячеек на одном листе в следующую доступную строку на отдельном листе - PullRequest
0 голосов
/ 06 января 2020

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

У меня есть заказ на рабочем листе с надписью «Форма заказа», который заполняется моими коллегами для каждого нового заказа, мне нужно, чтобы они могли нажать кнопку и тогда все данные, которые они заполнили, будут скопированы на другой лист с надписью «Заказы». Мне удалось скопировать данные, но лучшее, что я мог получить, - это вставить данные в те же ячейки на листе «Заказы».

Вот какой у меня код, это работает для копирования ...

Dim copyRng As Range, cel As Range, _
    pasteRng As Range

Set copyRng = ThisWorkbook.Sheets("Order Form").Range("B3,F3,C10,C11,C12,C13,C14,C15,D21,D22,D23,D24,D25,D26,D27,D28,D29,D30,D31,D32,D33,D34,E48,D36,G10,C40,G40")
Set pasteRng = ThisWorkbook.Sheets("Orders").Range("A2") 

Мне нужно вставить данные, скопированные выше, в следующую пустую строку на листе «заказы». Я знаю, что код очень грязный и, вероятно, излишний для копирования этих ячеек, и, вероятно, это действительно очень просто сделать, но я не могу решить это ... Пожалуйста, кто-нибудь, помогите ему сделать мою голову в LOL

Ответы [ 2 ]

0 голосов
/ 06 января 2020

Попробуйте и дайте мне знать, если это сработало.

Dim pasterange As Long
pasterange = ThisWorkbook.Sheets("Orders").Range("A" & Rows.Count).End(xlUp).Row + 1 ' the plus 1 is to get the next blank row

ThisWorkbook.Sheets("Orders").Range("A" & pasterange) = ThisWorkbook.Sheets("Order Form").Range("B3").Value
ThisWorkbook.Sheets("Orders").Range("B" & pasterange) = ThisWorkbook.Sheets("Order Form").Range("F3").Value
ThisWorkbook.Sheets("Orders").Range("C" & pasterange) = ThisWorkbook.Sheets("Order Form").Range("C10").Value
0 голосов
/ 06 января 2020

Вы не можете копировать и вставлять несколько вариантов. Быстрое и простое решение - сделать по одной ячейке за раз.

Dim pasterange As Long
pasterange = ThisWorkbook.Sheets("Orders").Range("A" & Rows.Count).End(xlUp).Row + 1 ' the plus 1 is to get the next blank row

ThisWorkbook.Sheets("Order Form").Range("B3").Copy Destination:=ThisWorkbook.Sheets("Orders").Range("A" & pasterange)
ThisWorkbook.Sheets("Order Form").Range("F3").Copy Destination:=ThisWorkbook.Sheets("Orders").Range("B" & pasterange)
ThisWorkbook.Sheets("Order Form").Range("C10").Copy Destination:=ThisWorkbook.Sheets("Orders").Range("C" & pasterange)

Я бы просто скопировал и вставил это, добавил дополнительные ячейки, которые вам нужно скопировать, и продолжил A, B, C, et c в части назначения.

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