Страница: 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 | 
 
		
			Поиск по форуму