Excel - формула "Сцепить"
Модератор: Naeel Maqsudov
В формуле =Сцепить() до кучи собирается текстовая информация, часть из которой надо сделать жирным шрифтом. У кого какие идеи?
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
идея только через макрос...

- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Угу. It is impossible 
Может вместо жирного шрифта использовать заглавные буквы? Это проще.

Может вместо жирного шрифта использовать заглавные буквы? Это проще.
Правило №1: "Начальник всегода прав!"
А жирненькие букофки - это каприз руководства.
Так где же примеры макросов от продвинутых монстров тупым юзерам?
А жирненькие букофки - это каприз руководства.
Так где же примеры макросов от продвинутых монстров тупым юзерам?
-
- Сообщения: 129
- Зарегистрирован: 21 июн 2005, 14:33
- Откуда: Крым, Феодосия
- Контактная информация:
Код: Выделить всё
ActiveCell.Characters(Start:=1, Length:=10).Font.FontStyle = "полужирный"

- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Несомненно лучше делать ".Font.Bold=true" вместо ".FontStyle=", иначе при запуске в нерусифицированной windows работать не будет.
Я тут попробовал набросать альтернативную функцию СЦЕПИТЬ2, но оказалось что из пользовательской функции листа нельзя делать активных действий с ячейками. Тогда я попробовал все данные запихать в глобальные переменные и запланировать запуск другого макроса через секунду, но и тут засада - Application.OnTime игнорируется в процессе работы пользовательской функции листа
Т.е. выход один - самый тупой - вместо функции СЦЕПИТЬ написать обработчик события у нужного листа:
Я тут попробовал набросать альтернативную функцию СЦЕПИТЬ2, но оказалось что из пользовательской функции листа нельзя делать активных действий с ячейками. Тогда я попробовал все данные запихать в глобальные переменные и запланировать запуск другого макроса через секунду, но и тут засада - Application.OnTime игнорируется в процессе работы пользовательской функции листа

Т.е. выход один - самый тупой - вместо функции СЦЕПИТЬ написать обработчик события у нужного листа:
Код: Выделить всё
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Select Case Target.Address
Case "$B$1", "$C$1" 'Тут делается D1=СЦЕПИТЬ(B1;C1) и C1 жирным
[D1] = [B1] & [C1]
[D1].Characters(Len([B1]) + 1, Len([C1])).Font.bold = True
Case .... 'Аналогичных секций добавить по вкусу столько сколько надо
...........
End Select
End Sub
Exactly, ЁМоё
!!!
Вот моя попытка:

Вот моя попытка:
Код: Выделить всё
Function СЦЕПИТЬЖ(Target As Range, Text1, Text2) As String
'Target.FormulaR1C1 = Text1 & Text2
'... ОПАЧКИ! А писать на листик низя!!!
'... Читать пжлста!
'MsgBox Target.Value
СЦЕПИТЬЖ = Text1 & Text2
End Function
Макросы - команды просто нефунционально. Хочется макрос-функцию. Сама вот чего родила.
Function BoldFont(InString, StartSimb) As String
Dim i As Integer, StringLength As Integer
BoldFont = ""
StringLength = Len(InString)
For i = StartSimb To StringLength Step 1
BoldFont = BoldFont & ...... 'вот здесь надо что-то умное дописать, что делает букофки жиренькими
Next i
End Function
SOS!!! Help me!Help me!
Function BoldFont(InString, StartSimb) As String
Dim i As Integer, StringLength As Integer
BoldFont = ""
StringLength = Len(InString)
For i = StartSimb To StringLength Step 1
BoldFont = BoldFont & ...... 'вот здесь надо что-то умное дописать, что делает букофки жиренькими
Next i
End Function
SOS!!! Help me!Help me!
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
siesta, дело в том, что функция сможет вернуть только строку, для изменения формата надо достучаться до соответствующих свойств объекта Characters

Ну так помогите ж найти что это за объект!!!