|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.05.2014, 00:54 | #1 |
Пользователь
Регистрация: 05.06.2010
Сообщений: 53
|
работа с диапазоном
Добрый день! подскажите, пожалуйста, как правильно написать код. У меня есть 3 макроса, есть таблица. Хочу сделать, чтобы при выборе нескольких строчек, для каждой выполнялись эти три макроса Т.е. сначала для первой выбранной строчки, затем для второй и т.д.
____________________________ Sub automatic() Dim cell As Range Application.ScreenUpdating = False For Each cell In Selection.SpecialCells(xlCellTypeCo nstants) Application.Run "Формирование_бланка1" Next For Each cell In Selection.SpecialCells(xlCellTypeCo nstants) Application.Run "Формирование бланка_2" Next For Each cell In Selection.SpecialCells(xlCellTypeCo nstants) Application.Run "сохранение_в_PDF" Next Application.ScreenUpdating = True End Sub _____________ У меня почему-то получается, что выполняется операция 3 раза (т.е. столько, сколько строчек выделила), а формируются данные только по 1ой строчке. Если ли какая-нибудь функция, по перемещению активной ячейки внутри диапазона. В интернете не нашла ничего схожего (только по перемещению всего диапазона) |
19.05.2014, 01:26 | #2 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
Возможно так
Код:
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
19.05.2014, 01:32 | #3 | |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Цитата:
Код:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
|
19.05.2014, 03:14 | #4 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Я бы еще добавил игнорирование возможных ошибок (On Error Resume Next) и запрет вывода сообщений (Application.DisplayAlerts = False) на случай, если в выделенном диапазоне не найдется ни одной ячейки, содержащей константы.
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 19.05.2014 в 05:51. |
19.05.2014, 12:17 | #5 |
Пользователь
Регистрация: 05.06.2010
Сообщений: 53
|
Спасибо большое за ответ. Но все равно обрабатывается Nраз только первая ячейка из всего выделенного диапазона
|
20.05.2014, 03:37 | #6 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
В макросах формирования бланков Вы используете код
Код:
Вызов макроса: Код:
Код:
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 20.05.2014 в 09:53. |
20.05.2014, 23:23 | #7 |
Пользователь
Регистрация: 05.06.2010
Сообщений: 53
|
Спасибо за ответ.
Попробовала реализовать, заменила "активные ячейки" на просто "ячейки". Теперь выводит ошибку 450 "Wrong number of arguments or invalid property assignment" |
21.05.2014, 10:05 | #8 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Вы не внимательны... Если передавать в макрос параметры, то и сам макрос должен их принимать. Обратите внимание на скобочки при заголовке макроса.
Посмотрите приложенный файл. Я оптимизировал макросы, выкинув все Activate-ы и Select-ы и собрав все операции в циклы. Согласитесь, что так на много проще, быстрее и изящнее. Также, добавил "нормальную" функцию перевода суммы из числа в пропись. Будут вопросы - задавайте. Будут ошибки - укажите в какой строке кода. Желаю удачи.
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 21.05.2014 в 12:29. |
21.05.2014, 13:06 | #9 |
Пользователь
Регистрация: 05.06.2010
Сообщений: 53
|
SAS888, все работает. Даже и не знаю что и сказать, вы переделали полностью мой файл и код теперь занимает совсем чуть-чуть. Спасибо огромное, но вопросов ОЧЕНЬ МНОГО. Если Вам не тяжело. можете разъяснить кое-что (функцию перевода суммы из числа еще даже не разбирала)
1) на что сразу обратила внимания, но так и не смогла найти хоть какое-то объяснение. В макросе "Формирование_бланка_ф7а_1" вы присваиваете значение a = Array(1441414144, 4111411114#...) судя по всему это перебор индекса, но хоть убейте не понимаю КАК, почему именно 4 и 1 ,и почему через один стоит знак # 2) FileNum$ = [AE1]: [AE1] = [AE1] + 1 а) почему на конце "$" - это значение относительности вроде б) как правильно прочитать эту строчку, мы сначала запоминаем номер из ячейки,а затем в нее добавляем единицу? 3) Попыталась выделить всего 1 человека, и создать ПДФ, так компьютер немного завис, стал создавать кучу файлов (на 50 уже не выдержала и воспользовалась Ctrl+Alt+Delete) иэ этих 50 3 были с нормально-заполненными бланками, а остальные выдавали имя ячейки (т.е. в ячейке индекса, было написно "Индекс и.т.д" С чем это связано? Но с 2-мя и более выделенными ячейками работает безукоризненно P.S. я в самом начале познавания VBA, и циклы пока для меня тяжеловато читаются, поэтому и делала все обычными командами, чтобы могла легко понять что и куда Последний раз редактировалось Kefirrr; 21.05.2014 в 13:16. |
21.05.2014, 13:43 | #10 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Заинтересовало эти 1414144141414...
Так там ведь оно используется в Borders(i + 6).Weight = Mid$(a(n), i + 1, 1) т.е. из этих строк в нужное время выбирается нужный символ. Хитро P.S. а знак # ставится сам, ничего не поделать... Разве что перевести в строку, но это лишние кавычки.
webmoney: E265281470651 Z422237915069 R418926282008
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа с выделенным диапазоном | DAN1L | Microsoft Office Excel | 5 | 29.11.2012 03:54 |
Функция с параметром диапазоном | savraska | Microsoft Office Excel | 5 | 26.05.2010 13:35 |
работа с диапазоном ячеек? | panzergto | Microsoft Office Excel | 4 | 01.04.2010 21:25 |
Работа с именным диапазоном | tae1980 | Microsoft Office Excel | 32 | 21.08.2009 11:10 |
работа с выделенным диапазоном | nastya007 | Microsoft Office Excel | 5 | 13.03.2009 08:33 |