Страницы: 1
RSS
Менять стиль шрифта по условию в ячейке
 
Доброе утро подскажите - как формулой менять стиль шрифта ?

Есть простое логическое условие:
Код
=ЕСЛИ(D9=1;"Times New Roman";"Arial")

Как заставить текст ""Times New Roman" - писаться в аналогичном стиле шрифта, а текст "Arial" - также в своем стиле шрифта ?
(Или может не формулой, а какой-нибудь пользовательской функцией)
 
только макросом формулы ни чего не меняют
Лень двигатель прогресса, доказано!!!
 
Формулы не меняют шрифт. Можно макросом по событию на листе.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, я же написал :
Цитата
какой-нибудь пользовательской функцией
 
Serg.Vrn,Вам для чего это ? Может условное форматирование подойдёт ?
 
Александр П., УФ шрифты не меняет
Лень двигатель прогресса, доказано!!!
 
Сергей, Меня ввело в заблуждение слово "стиль"  :) (почему то подумалось про стили ячеек) вдруг речь идёт о каком то выделении цвета заливки цвета шрифта курсиве и т.д.
Изменено: Александр П. - 08.11.2018 08:25:51
 
Как вариант - используйте недокументированную возможность: Как функцией пользователя изменить значение другой ячейки
Правда, ей далеко не все можно менять, но для каких-то целей вполне подойдет.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Подскажите - как пользовательской функцией в  ячейке G9 - менять стиль шрифта ?

То есть - как заставить текст ""Times New Roman" - писаться в аналогичном стиле шрифта, а текст "Arial" - также в своем стиле шрифта ?
 
Цитата
Serg.Vrn написал: Подскажите - как пользовательской функцией в  ячейке G9 - менять стиль шрифта ?
Цитата
Сергей написал: УФ шрифты не меняет
макрос адаптируйте под свой диапазон

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, а как этот макрос - сделать пользовательской функцией ?

Потому что сейчас, чтобы им пользоваться приходится всякий раз - жать кнопку макроса.
Изменено: Serg.Vrn - 08.11.2018 14:39:07
 
Цитата
Serg.Vrn написал: как этот макрос - сделать пользовательской функцией
Есть приемчик в "Приемах" - как вариант - https://www.planetaexcel.ru/techniques/3/59/
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Z, вот написал такой код
Код
Function Шрифт1(S)

    Dim rngTarget As Range
    Set rngTarget = Range("D9")
    ' - -
    Dim rngCell As Range
    ' - -
    For Each rngCell In rngTarget
        ' - -
        With rngCell
            ' - -
            If .Value = 1 Then
                .Font.Name = "Times New Roman"
            Else
                .Font.Name = "Arial"
            End If '.Value = 1
            ' - -
        End With 'rngCell
        ' - -
    Next rngCell
    
End Function

Дальше что с ним делать ?
 
Почитать это :
https://www.excel-vba.ru/chto-umeet-excel/chto-takoe-funkciya-polzovatelyaudf/
 
Logistic, не открывается чет..или только у меня?* или может наши It служба чет воротит)
Изменено: a.i.mershik - 08.11.2018 15:22:52
Не бойтесь совершенства. Вам его не достичь.
 
Открывается нормально.
 
Только что проверил.Работает.
 
А мне тоже 403 возвращает...
 
Открывается нормально
 
Подскажите - как пользовательской функцией в  ячейке G9 - менять стиль шрифта в зависимости от значения ячейки D9 ?

То есть - как заставить текст ""Times New Roman" - писаться в аналогичном стиле шрифта, а текст "Arial" - также в своем стиле шрифта ?

Имеется вот такой код, который сейчас не работает:
Код
Function Шрифт1(S)
 
    Dim rngTarget As Range
    Set rngTarget = Range("D9")
    ' - -
    Dim rngCell As Range
    ' - -
    For Each rngCell In rngTarget
        ' - -
        With rngCell
            ' - -
            If .Value = 1 Then
                .Font.Name = "Times New Roman"
            Else
                .Font.Name = "Arial"
            End If '.Value = 1
            ' - -
        End With 'rngCell
        ' - -
    Next rngCell
     
End Function
 
Никак. Функции листа не могут менять стили ячеек. С этим придётся смириться.
 
Точно. В собщении совсем не работает. Видимо, нужно было еще кнопку в сообщении показать...
С проблемой легче разобраться, если есть файл-пример

Цитата
StoTisteg написал: Функции листа не могут менять стили ячеек.
...но можно отслеживать изменение знчения с помощью событий

Цитата
в  ячейке G9 - менять стиль шрифта в зависимости от значения ячейки D9
Наоборот, наверное?
 
Вот файл пример.
 
Код в модуль листа
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Range("D9"), Target) Is Nothing Then
        If Target.Cells.Count > 1 Then Exit Sub
        Application.EnableEvents = False

        With Range("G9")
            If Target.Value = 1 Then
                .Font.Name = "Times New Roman"
                .Value = "Times New Roman"
            Else
                .Font.Name = "Arial"
                .Value = "Arial"
            End If
        End With

        Application.EnableEvents = True
    End If
End Sub

Вместо двух условий можно проверять больше. If меняем н Select Case
 
vikttur, спасибо.

Но у меня нет изменения ячейки D9 вручную.
Значение ячейки D9 - просто меняется под действием других формул, на других листах.
 
Serg.Vrn, значит повесьте макрос на активацию листа с ячейкой.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
В D9:
=формула*СЕГОДНЯ()^0
Изменить событие макроса  - пересчет листа
 
vikttur, все ясно.
Спасибо.
 
Можно еще в пользовательской функции изменять глобальную переменную, а в событии пересчета листа проверять ее и менять в ячейке, что нужно.
Страницы: 1
Наверх