Нужна помощь с Vba в Excel

  • Автор темы RainKate
  • Дата начала
R

RainKate

#1
Работать с макросами начала буквально несколько дней назад, посему у меня уже есть вопрос, связанный с редактирование кода VBA записанного мной макроса.

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

Вот пример кусочка кода:

Selection.Copy
Sheets("Данные склад").Select

и далее надо производить поиск пустой строки, я попыталась сделать это таким образом:
Set r1 = Worksheets("Данные доставка").Cells(4, 2).CurrentRegion
For j = 5 To r1.Rows.Count
If r1.Cells(5, 5).Offset(j, 5).Value = "" Then

(и тут код, который у меня не работает)
...
End If
Next j

Но у меня не получается вставить данные в найденную строку. Видимо я как-то не так обращаюсь к ячейке. Поэтому, если кто-то подскажет, как правильно записать вот этот кусочек вставки записей, то буду очень-очень признательна!
 

alex77755

Well-known member
15.02.2009
128
0
#2
Можно просто перебором

i = 1
While Sheets("sheet1").Range("a" + LTrim(Str(i))) <> Empty
i = i + 1
Wend

Range("A" & i).Select или типа Range("A" & i).value=


но проще так:

R = Columns(1).Rows(65536).End(xlUp).Row ' находим номер строки последней записи

Cells(R + 1, C).Select


<!--shcode--><pre><code class='VBA'>Sub Кнопка1_Щелкнуть()

Dim i
Dim R ' номер последней строки в исходной таблице на Листе2
Dim Rk 'номер последней строки в накопительной таблице на Листе3


R = Лист2.Columns(1).Rows(65536).End(xlUp).Row
Rk = Лист3.Columns(1).Rows(65536).End(xlUp).Row

For i = 6 To R ' 6 просто номер первой строки таблици

Лист3.Cells(Rk + i - 5, 1).Value = Лист2.Cells(i, 1).Value

Next i[/CODE]
End Sub