2

У меня есть ячейка, которая содержит что-то вроде этого:

="String of text that's moderately long" & YEAR(NOW()) & "."

Я хочу знать, есть ли способ, с помощью макроса, я могу раскрасить / стилизовать часть результирующей строки. Подобно:

String of text [that's] {moderately} <long/2013.>

часть в квадратных скобках красного цвета, часть в фигурных скобках синего цвета, а часть в <> подчеркнута.

Я уже попробовал это:

Private Sub Workbook_Open()
    With Sheet1
        With .Cells(8, 1).Characters(25, 9).Font
            .Color = vbRed
        End With

        With .Cells(8, 1).Characters(34, 3).Font
            .Color = vbBlack
        End With

        With .Cells(8, 1).Characters(37, 9).Font
            .Color = vbBlue
        End With

        With .Cells(8, 1).Characters(47).Font
            .Color = vbBlack
            .Underline = True
        End With
    End With
End Sub

и хотя он работает, кажется, что он работает правильно только с ячейками с фиксированным содержимым, а не с ячейками с такой формулой, как у меня. Так что да, есть идеи?

Я не совсем против того, чтобы заполнять ячейку полностью из VBA, на случай, если это так.

1 ответ1

2

Существует два способа описания содержимого ячейки:

  1. Фактическое содержание и
  2. видимое визуальное содержание после таблицы оценивается после расчета.

Для строки или фиксированного содержимого они одинаковы. Но по формуле они совершенно разные. Ваш код VBA имеет дело с содержимым ячейки (1), а не с результатом (2). Итак, да, вам придется извлечь содержимое из ваших формул и переместить их в ячейки с фиксированным содержимым, где будет работать ваше форматирование vba.

Можно использовать скрытую строку для формул и видимую строку для фактического отображения. Если пропуск номера строки при использовании скрытой ссылки на строку слишком неудобен / видим для предполагаемого пользователя, альтернативой может быть использование отдельного листа.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .