Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
mrf
12 / 12 / 4
Регистрация: 16.03.2012
Сообщений: 239
Завершенные тесты: 2
1

Изменение стиля ссылок в макросе после макрорекордера

17.02.2016, 17:41. Просмотров 1037. Ответов 4
Метки нет (Все метки)

Здравствуйте,
давным давно был сделан макрос, который вставляет формулы в нужную ячейку

ActiveCell.FormulaR1C1 = _
"=CountColor(sheet1!R[-2]C[-79]:R[9996]C[-79],sheet2!R1C1)"

По-человечески формула выглядит так:
=CountColor(sheet1!B2:B10000;sheet2!$A$1)

Проставляется таких формул в ячейки примерно около 200.
Сейчас нужно расширить диапозон с В10000 до В15000
Перезаписывать макрорекордом долго... и как всегда будет где-нить ошибка или не в ту ячейку...и т.п.

В связи с этим 2 вопроса:
1) как можно изменить в уже написанном макросе стиль ссылок на ячейки в человеческий вид?
если можно изменить, то потом просто - поиск и замена В10000 на В15000 во всех модулях........
2) Где настраивается макрорекордер чтоб он записывал по человечески в читаемом и понимаемом (для меня) формате?? Просмотрел все, стиль ссылок в параметрах без отметки "в стиле Р1С1".

С уважением,
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2016, 17:41
Ответы с готовыми решениями:

Выполнить условие после нахождения ошибок в строке типа #н/д! #дел/0! т.д. (ошибка в макросе)
Здравствуйте уважаемые форумчане! Помогите найти ошибку в коде макроса и...

Как прописать в макросе, чтобы результат добавлялся в следующую (после данных) пустую строку?
Добрый день. На одном листе данные, которые сначала фильтруются одним...

Нужно, чтобы в макросе после определенной проверки выдавалась форма, на которой надо было ввести имя.
У меня такая проблема: все не могу сделать, чтобы в макросе после определенной...

Изменение стиля тэга Select после выбора элемента списка?
Всем привет, друзья, подскажите пожалуйста, хочу неким образом изменить...

Изменение стиля текста в document.write через 10 секунд после загрузки сайта и изменяет цвет текста каждые 10 секунд
<style type="text/css"> .st1 { color: green; * * font: 20pt Arial; * *...

4
Казанский
14153 / 5852 / 1535
Регистрация: 24.09.2011
Сообщений: 9,193
17.02.2016, 18:18 2
mrf, стиль ссылок R1C1 близок к внутреннему формату хранения формул в Excel. Поэтому рекордер так и записывает.
Когда Вы протягиваете ячейку с формулой - ячейки заполняются ТОЙ ЖЕ САМОЙ формулой в стиле R1C1.
И для программирования этот стиль часто бывает удобнее, т.к. позволяет использовать номера столбцов, а не их буквенные имена.
Вместо
Visual Basic
1
ActiveCell.FormulaR1C1 = "=CountColor(sheet1!R[-2]C[-79]:R[9996]C[-79],sheet2!R1C1)"
Вы можете написать
Visual Basic
1
ActiveCell.Formula = "=CountColor(sheet1!B2:B10000,sheet2!$A$1)"
но если при выполнении макроса активная ячейка будет другой, то и формула получится другая.
Почему нужно расширить диапазон именно до 15000 строки? А не до 20000 например? В макросе можно найти последнюю строку и подставить ее в формулу, тем самым избегая лишних вычислений.
0
mrf
12 / 12 / 4
Регистрация: 16.03.2012
Сообщений: 239
Завершенные тесты: 2
17.02.2016, 22:38  [ТС] 3
Казанский, это я все понимаю, но дело в том, что формулы не протягиваются, а "впечатываются" в различные ячейки. Формулы разные(где-то countcolor, где-то через if и т.п.), у каждой разный диапазон по столбцам, но все заканчиваются в одной и той же(по номеру) строчке. Примерно 60% этих формул находятся в одном макросе, остальные 40% разбросаны по 30 другим макросам. Проблема, ввиду моих поверхностных знаний о ВБА и обучении только по этому форму и, в частности по Вашим постам и советам, была заложена мной изначально.. к сожалению..
Теперь, когда проект разросся, проблема вышла на передний план.. Переделывать все долго и утомительно, переписывать макрорекордером тоже не удобно. Вот и подумал, что возможно чем-нибудь автоматически переделать стиль ссылок, а потом также автоматически фаинд-реплейс 10000 на 15000.

Ограничение в 15000 в некоторых местах установлено специально как контрольная точка для тотальной перепроверки. В некоторых местах установлено для того, чтобы на одном листе сначала считать первые 15000, а потом вторые 15000 (которые идут со сдвигом в столбцах).

В общем Вы правы, и это тоже понимаю (но только) сейчас, что нужно переделывать и делать другие алгоритмы принципы, но сейчас приходится латать дыры до совершенства. Алгоритм уже придуман, одобрен, отработан, люди привыкли и научились, инструкции по работе тоже отработаны, трейнинги проведены..
"переделать нельзя исправить" - вставьте запятую..
Вердикт? в ручную исправлять макрос за макросом или есть вариант? Аксима как-то давал макрос на изменение "макроса макросом". Может есть макрос на изменение "стиля ячеек в макросе" в зависимости от вышестоящей строчки типа "рандж("А1").Селект.....? Или мысли поводу того как это сделать более удобно и быстро?
0
Казанский
14153 / 5852 / 1535
Регистрация: 24.09.2011
Сообщений: 9,193
18.02.2016, 00:57 4
Лучший ответ Сообщение было отмечено mrf как решение

Решение

Цитата Сообщение от mrf Посмотреть сообщение
Может есть макрос на изменение "стиля ячеек в макросе" в зависимости от вышестоящей строчки типа "рандж("А1").Селект.....?
Да, можно такое сделать - в Excel есть метод для преобразования стиля ссылок, вот пример из Immediate
Visual Basic
1
2
?application.ConvertFormula("=CountColor(sheet1!R[-2]C[-79]:R[9996]C[-79],sheet2!R1C1)",xlR1C1 ,xlA1,,range("CV4"))
=CountColor(sheet1!U2:U10000,sheet2!$A$1)
Но возни много.
А может, просто заменить фрагмент вида :R[9996] на :R15000 - будет абсолютная ссылка на строку, но это не помешает, если формулы не протягиваются.
Ctrl+H, find :R[[]*[]] , replace with :R15000 , Use Pattern Matching.
Можете сначала только поискать (Find Next), чтобы убедиться, что фрагмент находится только в нужных местах, ну а потом, затаив дыхание, Replace All.
1
Миниатюры
Изменение стиля ссылок в макросе после макрорекордера   Изменение стиля ссылок в макросе после макрорекордера  
mrf
12 / 12 / 4
Регистрация: 16.03.2012
Сообщений: 239
Завершенные тесты: 2
18.02.2016, 09:27  [ТС] 5
Спасибо! Помогло!
Чтобы не было нигде совпадений, поставил 14999
0
18.02.2016, 09:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2016, 09:27

Изменение стиля
Добрый день!!!! Кто нибудь сталкивался с такой проблемой, при переводе на...

Изменение стиля
Здравствуйте! У меня проблема с изменением стиля,нужно сделать невидимый...

Изменение стиля кнопки
Добрый день. Хочу установить стиль кнопки, как это сделано для нижнего ряда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru