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

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Rain_Kate
Сообщения: 2
Зарегистрирован: 24 авг 2009, 00:52

Работать с макросами начала буквально несколько дней назад, посему у меня уже есть вопрос, связанный с редактирование кода 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

Но у меня не получается вставить данные в найденную строку. Видимо я как-то не так обращаюсь к ячейке. Поэтому, если кто-то подскажет, как правильно записать вот этот кусочек вставки записей, то буду очень-очень признательна!
SAS888
Сообщения: 156
Зарегистрирован: 16 янв 2008, 08:28

Следующий код вставит выделенный диапазон на активном листе в ячейку столбца "A" требуемого листа, следующую после последней заполненной ячейкой:

Код: Выделить всё

Selection.Copy Sheets("Данные склад").Cells(Rows.Count, "A").End(xlUp).Offset(1)
Rain_Kate
Сообщения: 2
Зарегистрирован: 24 авг 2009, 00:52

SAS888, спасибо огромное! Как раз то, что надо =))
JedGeokE
Сообщения: 5
Зарегистрирован: 22 авг 2009, 20:21

спасибо огромное снова :- Но почему-то сработал только второй вариант, там где нет сцеплений подстрок. В первом варианте VBA ругнулся на ":"

RowsSelection.Row&":"&Selection.Row Selection.Rows.Count -1.Delete shift:=xlUp

А в третьем - на ":A":

Range"A"&Selection.Row&":A"&Selection.Row Selection.Rows.Count -1,1.EntireRow.Delete

[*** censored ***]
retaig
Сообщения: 7
Зарегистрирован: 08 сен 2009, 21:53

что в первом и третьем вариантах знак "&" должен быть отделен пробелами.
А вообще-то, почему Вас не устраивает удаление строк выделенного диапазона сразу, без определения первой и последней строк? Например, так:
Код:Selection.EntireRow.Delete
Ответить