Как отформатировать шрифт для отдельных символов в ячейке за пределами 255 - PullRequest
1 голос
/ 22 апреля 2019

Я использую Excel VBA для создания ячейки с форматированным текстом разметки. Работает нормально, пока ячейка не превысит 255 символов. В этот момент свойства шрифта установлены неправильно.

Я использую VBA для добавления символов с Range.Value = Range.Value & newchar, и это прекрасно работает. Но использование Range.Characters(n,1).Font.property (например, Name, Color, Strikethrough, Underline) для установки свойств шрифта отдельных символов не работает должным образом, если ячейка превышает 255 символов. Как применить свойства «Шрифт» к отдельным символам, если в ячейке более 255 символов?

Извините - это не очень хорошее описание проблемы. Я добавлял символ и сразу форматировал шрифт этого символа, затем добавлял и форматировал следующий символ и так далее. Чтобы выйти за пределы 255 символов, мне нужно использовать &, но это затрудняет форматирование шрифта для текста, уже находящегося в ячейке.

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

Трудно сказать, что вы делаете неправильно, не видя больше вашего кода. Но вот один из способов форматирования отдельных символов в ячейке. И я проверил это с 30000 символов в ячейке (хотя это занимает много времени). Код ниже создаст ячейку с символами и отформатирует определенные символы с несколькими характеристиками. Пример 750 символов.

Option Explicit
Sub par()
    Dim R As Range
    Dim S As String
    Dim I As Long, J As Long

Set R = Range("A1")

For J = 1 To 10
For I = 48 To 65 + 26 * 2 + 5
    S = S & Chr(I)
Next I
Next J

Debug.Print Len(S)
R = S

For I = 1 To Len(S)
    Select Case Mid(S, I, 1)
        Case "A", "D", "Y", "a", "t", "x", "8"
        With R.Characters(I, 1)
            .Font.Bold = True
            .Font.Color = vbRed
            .Font.Strikethrough = True
            .Font.Size = .Font.Size + 2
        End With
    End Select
Next I

End Sub

enter image description here

0 голосов
/ 22 апреля 2019

как дела?

Итак, я попробовал ваш код, и сделал это, чтобы заполнить ячейку A1 255 "A" и 255 "B"

here is the code

А потом использовал символьную функцию

есть результат

enter image description here

Возможно, вы неправильно используете функцию Characters(1,256)

Первый параметр символов - это начальный символ, а второй параметр - сколько символов после первого.

Надеюсь, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...