|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.04.2009, 11:36 | #1 |
Форумчанин
Регистрация: 24.01.2009
Сообщений: 625
|
Хочу написать макрос, не получается. Прошу помощи
На активном листе найти первую незаполненную ячейку в столбце A
Скопировать диапазон ячеек с другого листа на активный лист Начиная с первой (ранее найденой) незаполненой ячейки. |
13.04.2009, 12:07 | #2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
вот это:
Код:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
13.04.2009, 12:13 | #3 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Можно чуть проще.
Следующий код скопирует диапазон ячеек "A1:D10" листа № 2 и вставит в активный лист, начиная со следующей после последней заполненной ячейки столбца "A". Код:
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 13.04.2009 в 12:18. |
13.04.2009, 17:45 | #4 |
Форумчанин
Регистрация: 24.01.2009
Сообщений: 625
|
А можно поподробнее. Только начинаю изучать макросы.
Sheets(2).[A1:D10] перейти на лист 2 и скопировать в буфер диапазон A1:D10 Изменил на Sheets(заг).[A3:O18] Copy Cells(Rows.Count, "A"). Что делает эта строка кода? End(xlUp).Offset(1) Что делает эта строка кода? У меня ругается и говорит can`t execute code in break mode Что означает Offset(1) Именно 1 выделена синим курсором при ругательстве P.S. Обратите внимание на разницу между первой незаполненной и последней заполненной ячейкой (а Вам что нужно?). Первую незаполненную |
13.04.2009, 17:47 | #5 | |
Форумчанин
Регистрация: 24.01.2009
Сообщений: 625
|
Цитата:
отмеченные на листе 2 ячейки. а как их отметить ? мне нужен диапазон A3:O18 |
|
13.04.2009, 17:53 | #6 | |
Форумчанин
Регистрация: 24.01.2009
Сообщений: 625
|
Цитата:
Sheets(2).Select на Sheets(заг).Select Ругается и говорит следующее Run-time error `9`: Subscript out of range |
|
13.04.2009, 18:35 | #7 | |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Цитата:
Sheets(заг).Select на Sheets("заг").Select Если диапазон один и тот же - удобнее использовать то, что SAS888 написал. А отметить просто: Просто пройдитесь по листам, видите на каждом листе отмечена какая-то ячейка (или группа ячеек). Можно пройтись по любым листам, пробежаться курсором по любым ячейкам, активной (отмеченной) будет та ячейка, где оставили курсор. вообще, в моем макросе есть серьезная дыра: ее описал SAS888. Воспользуйтесь лучше его макросом.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
|
14.04.2009, 08:23 | #8 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
Так или иначе, строка Cells(Rows.Count, "A").End(xlUp).Offset(1) аналогична действиям: выделить последнюю ячейку столбца "A" (например, в 2003 это "A65536"), нажать "End"+"стрелка вверх" и сместиться на одну строку вниз. Соответственно, строка Range("A1").End(xlDown).Offset(1) - выделить "A1", нажать "End"+"стрелка вниз" и сместиться на строку вниз. Попробуйте сделать эти действия "вручную" и выберите то, что Вам нужно.
Чем шире угол зрения, тем он тупее.
|
|
14.04.2009, 09:51 | #9 |
Форумчанин
Регистрация: 24.01.2009
Сообщений: 625
|
[QUOTE=SAS888;240244]Можно чуть проще.
Следующий код скопирует диапазон ячеек "A1:D10" листа № 2 и вставит в активный лист, начиная со следующей после последней заполненной ячейки столбца "A". Код:
P.S. Обратите внимание на разницу между первой незаполненной и последней заполненной ячейкой (а Вам что нужно?). Оказалось мне надо последнюю заполненную ячейку |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Прошу помощи! | Oksana | Общие вопросы Delphi | 6 | 11.02.2007 18:36 |