![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Форумчанин
Регистрация: 13.03.2009
Сообщений: 253
|
![]()
Спасибо, очень выручили.
|
![]() |
![]() |
![]() |
#12 |
Форумчанин
Регистрация: 13.03.2009
Сообщений: 253
|
![]()
Код используется для заполнения дней недели, с указанием каждой ячейки. В примере код работает, но если добавить еще несколько групп (например c,d,f) то макрос выдаст 'procedure too large'
Можно каким-нибудь образом сократить код? |
![]() |
![]() |
![]() |
#13 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
Посмотрите пример во вложении.
Чем шире угол зрения, тем он тупее.
|
![]() |
![]() |
![]() |
#14 |
Форумчанин
Регистрация: 13.03.2009
Сообщений: 253
|
![]()
Спасибо огромное.
Вот так сократили ![]() Set sh1 = Sheets(sh): Set sh2 = Sheets(sh + 4): j = 10: - почему именно 10 ? Последний раз редактировалось ruavia3; 15.05.2009 в 09:37. |
![]() |
![]() |
![]() |
#15 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
Обратите внимание, как адресуются ячейки "откуда брать" и "куда вставлять".
В первом проходе внешнего цикла j=10 и k=0. Соответственно, берем значения из нужного листа в найденной строке из столбцов j, j + 1 и j + 2 (т.е. "J", "K" и "L") и вставляем в 1-й лист в столбцы 5, 6 и 7 (т.е. "E", "F" и "G"). При втором проходе - j = 2 и k = 1. Соответственно, из столбцов "B:D" вставляем в "B:D". Подставьте значения j и k для 1-го и 2-го прохода в формулы, например, этого фрагмента макроса: Код:
Чем шире угол зрения, тем он тупее.
|
![]() |
![]() |
![]() |
#16 |
Форумчанин
Регистрация: 13.03.2009
Сообщений: 253
|
![]()
Не работает
![]() Хорошо, когда значения выборки стоят по порядку, мы можем задать цикл с j=10, а потом j=2 (выбирая столбец). А если данные идут не по порядку, если столбцы выборки для одной группы находятся в середине другой? Последний раз редактировалось ruavia3; 15.05.2009 в 15:57. |
![]() |
![]() |
![]() |
#17 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
Решение делается в зависимости от задания. Если для прошлого случая было рационально использовать цикл с изменением номера столбца, то сейчас лучше сделать так (см. вложение).
P.S. Давайте называть вещи своими именами: предыдущий макрос работает и полностью выполняет свою задачу. Если Вы снова будете изменять требования, то либо вносите корректные изменения в код макроса, либо поставьте соответствующий вопрос.
Чем шире угол зрения, тем он тупее.
|
![]() |
![]() |
![]() |
#18 |
Форумчанин
Регистрация: 13.03.2009
Сообщений: 253
|
![]()
Виноват, согласен. Я планировал дальше сам дописать код, не зная, что придется переписывать его целиком.
В последнем файле, группа b почему-то не заполняется( |
![]() |
![]() |
![]() |
#19 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
Добавил. Посмотрите.
Чем шире угол зрения, тем он тупее.
|
![]() |
![]() |
![]() |
#20 |
Форумчанин
Регистрация: 13.03.2009
Сообщений: 253
|
![]()
Если потребуется добавить еще группы листов, например с, d. То в конце кода нужно написать:
Next Set ws = Sheets(sh + 4) Next Set ws = Sheets(sh + 8) Next Set ws = Sheets(sh + 12) Next Верно? |
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Optionbutton(ы) на MultiPage | ruavia3 | Microsoft Office Excel | 2 | 30.04.2009 14:26 |
OptionButton | Волк | Microsoft Office Excel | 3 | 09.04.2009 09:53 |
макрос для суммирования | jisu | Microsoft Office Excel | 5 | 30.03.2009 23:21 |
Макрос для копирования | knyz | Microsoft Office Excel | 28 | 11.01.2009 06:12 |
Макрос для терпеливых | jungo | Microsoft Office Excel | 3 | 04.05.2008 14:49 |