Сохранение неоднородного форматирования при автозамене текста в строке, Если в ячейке формат различный, то при автозамене формат ячейки становится таким же как и первый символ
Пользователь
Сообщений: Регистрация: 01.01.1970
Excel-master
26.11.2014 18:21:54
Да "м²" замениться на "м3", но можно заменить 2 на 3 и формат сохранится. И это не особенность Characters.Font, это особенность моего макроса, его можно исправить. Меня волнует вопрос "почему мой макрос иногда работает быстро, а иногда (особенно при первом пуске) дико тормозит?"
Сохранение неоднородного форматирования при автозамене текста в строке, Если в ячейке формат различный, то при автозамене формат ячейки становится таким же как и первый символ
Пользователь
Сообщений: Регистрация: 01.01.1970
Excel-master
26.11.2014 07:39:12
, доработать макрос, чтобы в нем были поля для "найти" и "заменить" можно, только поможет ли это сделать макрос быстрее? (маловероятно) , в моем макросе получилось бы так "бух-бух-лыга", Т.е. при замене оставляется форматирование первого символа искомого слова (вторая "ма" начиналась с жирной буквы). Можно сделать. чтобы сохранялось форматирование, когда искомое слово больше по длине, чем его замена.... но это уже мелочи.
Сохранение неоднородного форматирования при автозамене текста в строке, Если в ячейке формат различный, то при автозамене формат ячейки становится таким же как и первый символ
Пользователь
Сообщений: Регистрация: 01.01.1970
Excel-master
25.11.2014 01:06:06
ikki, форматирование убивается каждый раз, когда в автоматическом режиме происходит изменение части текста. Попробуйте сами это сделать через "Найти и заменить". Т.е. в вашем примере, когда в форматированной ячейке поменяется только нужный кусок, формат уже будет стерт.
Сохранение неоднородного форматирования при автозамене текста в строке, Если в ячейке формат различный, то при автозамене формат ячейки становится таким же как и первый символ
Пользователь
Сообщений: Регистрация: 01.01.1970
Excel-master
20.11.2014 02:13:06
Как и два года назад, никто ничем помочь не в состоянии. Может время для таких "сложных" тем еще не настало?...
Сохранение неоднородного форматирования при автозамене текста в строке, Если в ячейке формат различный, то при автозамене формат ячейки становится таким же как и первый символ
Пользователь
Сообщений: Регистрация: 01.01.1970
Excel-master
17.11.2014 05:18:25
Михаил, пример изменение "Слово" в "Слава" при автоматической замене верно описывает проблему. Т.е. нужно чтобы "Слово" изменялось в "Слава".
По сути форматирование в ячейке может быть любым (другой шрифт, цвет, размер, стиль и т.д.) Пример с формулами с надстрочными и подстрочными символами - всего лишь пример.
Хочется сделать универсальное решение.
Сохранение неоднородного форматирования при автозамене текста в строке, Если в ячейке формат различный, то при автозамене формат ячейки становится таким же как и первый символ
Пользователь
Сообщений: Регистрация: 01.01.1970
Excel-master
16.11.2014 22:53:05
, макрос уже написан и с макрозаписью не имеет ничего общего.
, задача следующая: нужно сохранить форматы всех символов в ячейки, а затем их восстановить. Справка: кнопка "restore" (макрос Restore_font) восстанавливает измененный текст на "листе 1", копируя значения ячеек с листа "копия Листа 1". Идея простая. содается класс, коллекция CharFont, который в качестве обхъектов содержит параметры формата отдельного символа и несколько функций. Функция saveFont принимает символ и сохраняет в экземпляре своего класса формат символа. Функция getFont восстанавливает формат символа. Функция CneckFont применяется для того чтобы сохранять в коллекции только группы символов с уникальным форматом.
При сохранении форматов символов создается массив с номерами элементов, которые имеют отличный от предыдущего символа формат. Массив затем используется при восстановлении форматов.
Вот общая идея, без детального разбора макросов.
Сохранение неоднородного форматирования при автозамене текста в строке, Если в ячейке формат различный, то при автозамене формат ячейки становится таким же как и первый символ
Пользователь
Сообщений: Регистрация: 01.01.1970
Excel-master
16.11.2014 21:59:07
Михаил С., как Scripting.Dictionary может помочь в сохранении формата символов ячеек и последующего восстановления этого формата?
Сохранение неоднородного форматирования при автозамене текста в строке, Если в ячейке формат различный, то при автозамене формат ячейки становится таким же как и первый символ
Пользователь
Сообщений: Регистрация: 01.01.1970
Excel-master
16.11.2014 03:42:57
Если в строке используется, к примеру, надстрочные символы м², °С и т.д., то при замене через "найти и заменить" формат изменится.
Я собрал макрос, который перед заменой сохраняет форматирование, а после замены - восстанавливает исходный формат ячейки. Проблема в том, что мой макрос работает весьма неоптимально. Время работы в приведенном мной файле-примере составляет 4 секунды (слишком много) Хотелось бы оптимизировать код, но я не знаю как.
Замена текста с сохранением форматирования
Пользователь
Сообщений: Регистрация: 01.01.1970
Excel-master
30.05.2013 22:24:09
Даже так... стоит изменить текст на листе "Копия Листа 1" и вновь запустить макрос "Start" №1, то время уменьшается до 0.6 секунд против 9 секунд.
Данный эффект мне не понятен ((
Замена текста с сохранением форматирования
Пользователь
Сообщений: Регистрация: 01.01.1970
Excel-master
30.05.2013 22:16:11
Прикрепляю файл
Замена текста с сохранением форматирования
Пользователь
Сообщений: Регистрация: 01.01.1970
Excel-master
30.05.2013 22:14:01
Здравствуйте. Хочу поделиться макросом, который при замене какого-либо куска текста в ячейке, оставляет форматирование остального текста в исходном состоянии. На Листе1 присутствуют три кнопки: две кнопки "Start" и одна "Restore"(восстановление) Кнопки старт заменяют однократно один текст на другой. Макрос первой кнопки "Start" сохраняет форматирование группы символов. Макрос второй кнопки "Start" сохраняет форматирование каждого символа.
Проблема заключается в том, что при первом запуске "Start" №1 время работы макроса составляет около 9 секунд, а при последующих запусках время уменьшается до 0.6 секунд.
Подскажите, пожалуйста, в чем может быть проблема.
Копирование форматированной даты в виде текста
Пользователь
Сообщений: Регистрация: 01.01.1970
Excel-master
17.12.2012 19:52:06
Спасибо, помогло.
Копирование форматированной даты в виде текста
Пользователь
Сообщений: Регистрация: 01.01.1970
Excel-master
17.12.2012 16:54:27
Здравствуйте.
Допустим есть ячейка с датой в формате [$-FC19]«Д» ММММ ГГГГ "г." То есть вместо 17.12.12 будет выводится «17» декабря 2012 г.
Вопрос, как в макросе строковой переменной присвоить значение = "«17» декабря 2012г.", вместо "17.12.12" ?
Заранее спасибо.
Фильтр в сводной таблице по датам, больше чем требуемая.
Пользователь
Сообщений: Регистрация: 01.01.1970
Excel-master
14.12.2012 16:12:32
Предпочту не замечать хамства.
Спасибо, сам нашел.
Фильтр в сводной таблице по датам, больше чем требуемая.
Пользователь
Сообщений: Регистрация: 01.01.1970
Excel-master
14.12.2012 14:16:01
Исправил неправильные даты... Все равно в сводной таблица информативней не стала ((
Фильтр в сводной таблице по датам, больше чем требуемая.
Пользователь
Сообщений: Регистрация: 01.01.1970
Excel-master
14.12.2012 14:01:37
Офис 2010. Проверил форматирование ячеек: формат всех ячеек с датами - даты. Хочется, чтобы еще и в 2003 офисе работало.
Фильтр в сводной таблице по датам, больше чем требуемая.
Пользователь
Сообщений: Регистрация: 01.01.1970
Excel-master
14.12.2012 13:28:02
Здравствуйте.
Подскажите, как в сводной таблице сделать фильтр "позже задаваемой даты". То есть нужно чтобы можно было ввести дату и посчитаются только те данные, которые были созданы после необходимой даты
как дождаться окончание перерасчета ячеек
Пользователь
Сообщений: Регистрация: 01.01.1970
Excel-master
05.12.2012 17:43:04
Попробуйте перед записью результатов вставить ActiveSheet.Calculate
Цикличное исполнение макроса.
Пользователь
Сообщений: Регистрация: 01.01.1970
Excel-master
05.12.2012 17:37:03
На вскидку. Вначале приведенного вами кода надо вставить цикл:
for i =1 to 100 ' сам цикл
В середине вместо: Selection.Copy Destination:=Range("С1:С9")