Работа с коллекцией Characters
довольно медленная, поэтому вы можете столкнуться с некоторым уровнем плохой производительности.
Однако есть вероятность, что вы можете сэкономить время.
Например:
For j = 1 To Len(s)
cell.Characters(j, 1).Text = Replace(cell.Characters(j, 1).Text, Chr(147), """")
cell.Characters(j, 1).Text = Replace(cell.Characters(j, 1).Text, Chr(148), """")
Вам не нужно использовать коллекцию символов здесь, поскольку вы просто очистили весь цвет шрифта, нет необходимости использовать подход Characters
или просто заменить с помощью .Value
EDIT: возможно, стоит установить флаг внутри чтобы отслеживать, было ли применено любое форматирование символьного уровня, поэтому вы можете избежать любого ненужного использования .Characters
и полагаться вместо этого на .Value
. Вы можете удалите это из цикла:
cell.Interior.Color = vbWhite
cell.Characters.Font.Color = vbBlack
и замените на
KeywordSearch.Interior.Color = vbWhite
KeywordSearch.Font.Color = vbBlack
перед циклом
Этот
If word = "and" Or word = "not" Or word = "or" Then
For j = 1 To Len(word)
cell.Characters(offset + j - 1, 1).Text = UCase(Mid(word, j, 1))
Next
End If
может быть быстрее:
If word = "and" Or word = "not" Or word = "or" Then
cell.Characters(offset, len(word)).Text = UCase(word)
End If