Excel - формула "Сцепить"

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

sergvk
Сообщения: 129
Зарегистрирован: 21 июн 2005, 14:33
Откуда: Крым, Феодосия
Контактная информация:

siesta, ... или я начинаю входить в штопор над Вашим вопросом или я отстал от жизни - :( ((
Мне начинает казаться, что Вы хотите написать ПОЛЬЗОВАТЕЛЬСКУЮ функцию для форматирования (кот можно вставить в ячейку мастером функций), но этого нельзя сделать (если я не "заблудился в соснах") - :) )
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Подтверждаю, функцию НЕЛЬЗЯ. Во время работы функции нельзя изменять значения свойств объектов Range, Application... Возможно и других - не проверял.
Макросы - команды просто нефунционально
Выше пример обработчика событий. В готовом документе как раз очень функционально. Пользователю вообще ничего не надо делать - ни макросов запускать, ни формул вводить. Знай себе вводи значения.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Правило №1: "Начальник всегода прав!"
А жирненькие букофки - это каприз руководства.
Этимология слова "каприз" указыват на первоначальный его смысл - "козьи выходки" :)

Реализация этого "каприза" экономически не целеесообразна - это ясно как день.
siesta
Сообщения: 5
Зарегистрирован: 17 апр 2006, 16:10

В ваших примерах обработчиков событий все хорошо работает до тех пор, пока обрабатывем аргументы функции "СЦЕПИТЬ" в виде текста. Если же аргумент - вложенная функия (собственно ради чего и стоит использовать ту функцию "СЦЕПИТЬ"), то ничего не работает... :cry:
Sokl
Сообщения: 451
Зарегистрирован: 12 сен 2005, 08:52
Откуда: ОМ

Чем чёрт не шутит! Может, так проканает:

:D

Код: Выделить всё

Private Sub Worksheet_Calculate()
On Error Resume Next
    If ([D1] <> [B1] & [C1]) Then
      [D1] = [B1] & [C1]
      [D1].Characters(1, Len([B1])).Font.Bold = False
      [D1].Characters(Len([B1]) + 1, Len([C1])).Font.Bold = True
    End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
    If ([D1] <> [B1] & [C1]) Then
        [D1] = [B1] & [C1]
        [D1].Characters(1, Len([B1])).Font.Bold = False
        [D1].Characters(Len([B1]) + 1, Len([C1])).Font.Bold = True
    End If
End Sub
Sokl
Сообщения: 451
Зарегистрирован: 12 сен 2005, 08:52
Откуда: ОМ

Кстати, Naeel Maqsudov, а Вы пробовали "сцеплять" своим макросом цыферки? Занимательный эффект наблюдается, знаете ли.
Ответить