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

Что мне нужно сделать, это заполнить список на отдельном листе ("машины") в рабочей книге из другого листа ("NewMachine"), на котором я ввожу информацию, эта введенная информация на листе "NewMachine" очищается и готова для другого запись.

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

по существу

Столбец A Столбец B Столбец C

... ... ...

2 2 Информация

1 1 Информация

Вот код, который у меня есть:

Sub capturedata()

Dim wks As Worksheet
Dim lastrow As Long

Set wks = Sheets("Machines")

lastrow = wks.Range("A:A").Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row


wks.Cells(lastrow + 1, 3).Value = Cells(6, 2).Value
wks.Cells(lastrow + 1, 4).Value = Cells(7, 2).Value
wks.Cells(lastrow + 1, 5).Value = Cells(8, 2).Value
wks.Cells(lastrow + 1, 6).Value = Cells(9, 2).Value
wks.Cells(lastrow + 1, 7).Value = Cells(10, 2).Value
wks.Cells(lastrow + 1, 8).Value = Cells(11, 2).Value
wks.Cells(lastrow + 1, 9).Value = Cells(12, 2).Value
wks.Cells(lastrow + 1, 10).Value = Cells(13, 2).Value
wks.Cells(lastrow + 1, 11).Value = Cells(14, 2).Value


Range("B6:B14").ClearContents

End Sub

Это позволяет мне вводить информацию для заполнения списка сверху вниз, но не более того.

1 ответ1

0

новые записи появляются вверху списка

Вставьте новую строку выше 2-й строки вместо поиска lastrow

Также вы можете скопировать весь диапазон один раз вместо прохождения каждой ячейки.

Sub capturedata()

    Dim wks As Worksheet

    Set wks = Sheets("Machines")

    With wks
        .Rows(2).EntireRow.Insert
        .Range("C2:K2") = Range("B6:B14").Value
    End With

    Range("B6:B14").ClearContents

End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .