Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: VBA Excel Подчеркивание Добавлено: 02.12.10 18:49  

Автор вопроса:  AesmaDiv
Памагите нубу пжлста!
Нужна подсказка как реализовать частичное подчеркивание текста в ячейке при помощи самопальной функции Excel. То есть: имеется ячейка А1 со значением "Мама мыла раму". Необходимо заварганить такую функцию ПОДЧЕРК(), чтоб при применении в ячейке А2 -> (=ПОДЧЕРК(А1)) отображалось "Мама мыла раму".
Каэшна было бы проще ткнуть в кнопку подчеркивания на панели, но не тут-то было. Загвоздка в том, что функция нужна для возможности именно частичного подчеркивания. Например:
="Мама "&ПОДЧЕРК("мыла")&" раму"
должна возвращать:
Мама мыла раму

Пробовал баловаться с Underline, но его получается использовать в процедурах и макросах, а в функциях действовать отказывается. Оно то и понятно, функция должна возвращать значение. А вот как заставить функцию копировать текст и отображать делать его подчеркнутым?

зы. Может есть какой-то тэг подчеркивания в Excel, типа как в HTML? Ведь если ячейка содержит текст, то текст можно частично выделить и подчеркнуть, а если формулу, то кнопка подчеркивания даже неактивна.

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 VbStarter



ICQ: 357911808 

Вопросов: 118
Ответов: 1340
 Web-сайт: moscowdevils.ru
 Профиль | | #1
Добавлено: 02.12.10 22:09
вроде бы
  1. ="Мама " & Underline("Мыла ") & "раму"

Ответить

Номер ответа: 2
Автор ответа:
 VbStarter



ICQ: 357911808 

Вопросов: 118
Ответов: 1340
 Web-сайт: moscowdevils.ru
 Профиль | | #2
Добавлено: 02.12.10 22:10
процедурах и макросах, а в функциях действовать отказывается.
Макрос, функция и процедура - это всё во встоенном в Execel VBA. надо помоему только код руками написать. :)

Ответить

Номер ответа: 3
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #3 Добавлено: 03.12.10 04:03
  1.     ActiveCell.FormulaR1C1 = "WAZZZZZZZZZZZZZUP"
  2.     With ActiveCell.Characters(Start:=4, Length:=4).Font
  3.         .Underline = xlUnderlineStyleSingle
  4.     End With

Ответить

Номер ответа: 4
Автор ответа:
 AesmaDiv



Вопросов: 1
Ответов: 3
 Профиль | | #4 Добавлено: 03.12.10 18:27
Не-а..нету такой функции в Excel. Underline это параметр шрифта, задаваемый через VBA.
expression.Font.Underline

Ответить

Номер ответа: 5
Автор ответа:
 AesmaDiv



Вопросов: 1
Ответов: 3
 Профиль | | #5 Добавлено: 03.12.10 19:11
Artyom Спасибо, но этот вариант не катит. Насколько я понимаю, это листинг макроса как подчеркнуть содержимое ячейки. Это я пробовал. Всё немного сложней. Макрос - по сути процедура, выполняемая принудительно, а нужна функция.
Допустим ячейка A1 содержит сложную формулу:
=ЕСЛИ((E5=0);"Масса нефти нетто(прописью) по листу: "&СуммаПрописьюТонны(A1);" ";)
отображается:
Масса нефти нетто(прописью) по листу: Одна тысяча двести сорок пять тонн
Нужно реализовать что-то вроде:
=ЕСЛИ((E5=0);"Масса нефти нетто(прописью) по листу: "&ПОДЧЕРК(СуммаПрописьюТонны(A1);" ";))
чтоб отображалось:
Масса нефти нетто(прописью) по листу: Одна тысяча двести сорок пять тонн.
В качестве функции мне это реализовать не удалось. Получилось создать процедуру:
  1. Sub ПОДЧЕРК()
  2. ActiveCell.Characters(Start:=4, Length:=4).Font.Underline = xlUnderlineStyleSingle
  3. End

однако, если в активной ячейке находится не текст, а формула, подчеркивается не с 4 символа начиная с 4-го, а всё содержимое ячейки.
Единственное до чего я добыдлокодился это:
  1. Sub UnderLN()
  2. Dim ind1, ind2
  3. Range("A10").Value = Range("A1").Value
  4. Range("A10").Activate
  5. ind1 = WorksheetFunction.Search(":", Range("A10"), 1)
  6. ind2 = Len(Range("A10").Text)
  7. ActiveCell.Characters(ind1, ind2).Font.Underline = xlUnderlineStyleSingle
  8. Range("A10").Copy
  9. Range("A1").PasteSpecial
  10. Range("A10").Clear
  11. End Sub

Копируем значение ячейки A1 в ячейку А10. Получаем ячейку А10 содержащую текст, а не формулу. Находим в тексте символ ":" и подчеркиваем все последующие символы. Копируем итог в ячейку А1 с сохранением форматирования и очищаем ячейку А10.
Косяки: Формула из ячейки А1 потеряна навечно. Можно реализовать функцию запроса адреса ячейки посредством InputBox() дабы не лезть в код каждый раз, но даже в этом случае придется вручную запускать макрос для каждого случая. Поэтому нужна функция, которую можно использовать в документе изначально при его составлении.

ЗЫ. Пробовал из функции вызывать процедуру Call UnderLN() - без результатно.

ЗЫЫ. Просто не верится, что это невозможно. :`(

Ответить

Номер ответа: 6
Автор ответа:
 AesmaDiv



Вопросов: 1
Ответов: 3
 Профиль | | #6 Добавлено: 03.12.10 19:15
Перепутал тэги курсива и подчеркивания, извините.
##Масса нефти нетто(прописью) по листу: Одна тысяча двести сорок пять тонн.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам