Страница: 1 |
|
Вопрос: VBA Excel Подчеркивание
|
Добавлено: 02.12.10 18:49
|
|
Автор вопроса: AesmaDiv
|
Памагите нубу пжлста!
Нужна подсказка как реализовать частичное подчеркивание текста в ячейке при помощи самопальной функции Excel. То есть: имеется ячейка А1 со значением "Мама мыла раму". Необходимо заварганить такую функцию ПОДЧЕРК(), чтоб при применении в ячейке А2 -> (=ПОДЧЕРК(А1)) отображалось "Мама мыла раму".
Каэшна было бы проще ткнуть в кнопку подчеркивания на панели, но не тут-то было. Загвоздка в том, что функция нужна для возможности именно частичного подчеркивания. Например:
="Мама "&ПОДЧЕРК("мыла")&" раму"
должна возвращать:
Мама мыла раму
Пробовал баловаться с Underline, но его получается использовать в процедурах и макросах, а в функциях действовать отказывается. Оно то и понятно, функция должна возвращать значение. А вот как заставить функцию копировать текст и отображать делать его подчеркнутым?
зы. Может есть какой-то тэг подчеркивания в Excel, типа как в HTML? Ведь если ячейка содержит текст, то текст можно частично выделить и подчеркнуть, а если формулу, то кнопка подчеркивания даже неактивна.
Ответить
|
Номер ответа: 5 Автор ответа: AesmaDiv
Вопросов: 1 Ответов: 3
|
Профиль | | #5
|
Добавлено: 03.12.10 19:11
|
Artyom Спасибо, но этот вариант не катит. Насколько я понимаю, это листинг макроса как подчеркнуть содержимое ячейки. Это я пробовал. Всё немного сложней. Макрос - по сути процедура, выполняемая принудительно, а нужна функция.
Допустим ячейка A1 содержит сложную формулу:
=ЕСЛИ((E5=0);"Масса нефти нетто(прописью) по листу: "&СуммаПрописьюТонны(A1);" "
отображается:
Масса нефти нетто(прописью) по листу: Одна тысяча двести сорок пять тонн
Нужно реализовать что-то вроде:
=ЕСЛИ((E5=0);"Масса нефти нетто(прописью) по листу: "&ПОДЧЕРК(СуммаПрописьюТонны(A1);" ")
чтоб отображалось:
Масса нефти нетто(прописью) по листу: Одна тысяча двести сорок пять тонн.
В качестве функции мне это реализовать не удалось. Получилось создать процедуру:
- Sub ПОДЧЕРК()
- ActiveCell.Characters(Start:=4, Length:=4).Font.Underline = xlUnderlineStyleSingle
- End
однако, если в активной ячейке находится не текст, а формула, подчеркивается не с 4 символа начиная с 4-го, а всё содержимое ячейки.
Единственное до чего я добыдлокодился это:
- Sub UnderLN()
- Dim ind1, ind2
- Range("A10").Value = Range("A1").Value
- Range("A10").Activate
- ind1 = WorksheetFunction.Search(":", Range("A10"), 1)
- ind2 = Len(Range("A10").Text)
- ActiveCell.Characters(ind1, ind2).Font.Underline = xlUnderlineStyleSingle
- Range("A10").Copy
- Range("A1").PasteSpecial
- Range("A10").Clear
- End Sub
Копируем значение ячейки A1 в ячейку А10. Получаем ячейку А10 содержащую текст, а не формулу. Находим в тексте символ ":" и подчеркиваем все последующие символы. Копируем итог в ячейку А1 с сохранением форматирования и очищаем ячейку А10.
Косяки: Формула из ячейки А1 потеряна навечно. Можно реализовать функцию запроса адреса ячейки посредством InputBox() дабы не лезть в код каждый раз, но даже в этом случае придется вручную запускать макрос для каждого случая. Поэтому нужна функция, которую можно использовать в документе изначально при его составлении.
ЗЫ. Пробовал из функции вызывать процедуру Call UnderLN() - без результатно.
ЗЫЫ. Просто не верится, что это невозможно. :`(
Ответить
|
Страница: 1 |
Поиск по форуму