VBA Script для условно форматировать конкретный текст в сокрусной ячейке
Вопрос
Я новый, чтобы преуспеть и пытаться написать сценарий VBA для условного форматирования некоторых ячеек.
У меня есть столбец A, каждая отдельная клетка выглядит так.
Имя проекта: имя One
АО: Имя два
Бо: Имя три
СО: Имя четыре
Делайте: имя пять
Одна дополнительная деталь заключается в том, что не каждая ячейка имеет все пять строк. Например, ячейка может иметь только:
AO: имя два
Бо: Имя три
Что мне нужно сделать, это отформатировать его так, чтобы название проекта :, AO:, BO :, CO :, И делать: все смело жирным, пока именем можно смело, курсируемым и цветным. Я не могу сказать, как добавить цвет здесь, но это будет выглядеть что-то подобное.
Имя проекта: имя один (с цветом)
ao: Имя два
Bo: Имя три
co: имя четыре
<Сильные> Делать: имя пять
Мне интересно, есть ли способ создать сценарий VBA, чтобы сделать это автоматически? Мой обходной путь Последних нескольких дней был индивидуально выбирающий текст в каждой ячейке и применяя их форматирование, и это был ад!
Excel версия: 2010
Решение
Эта пара подпрограмм сделает работу.Форматирование может быть применено к диапазону клеток одновременно.
' Make a keyboard shortcut for this macro:
Sub FormatActiveCells()
Dim c As Range
For Each c In Selection.Cells
FormatCell c
Next
End Sub
' This subroutine does the work
Sub FormatCell(c As Range)
Dim pos1 As Integer, pos2 As Integer
' Determine if line 1 is project name
pos1 = InStr(1, c.Text, "Project Name:")
If pos1 > 0 Then
' Make "Project Name:" bold
c.Characters(pos1, Len("Project Name:")).Font.FontStyle = "Bold"
' Advance past colon character
pos1 = pos1 + Len("Project Name:")
' Find end-of-line character
pos2 = InStr(pos1, c.Text, Chr(10))
' Make text between "Project Name:" and end-line italicized and colored
c.Characters(pos1, pos2 - pos1).Font.FontStyle = "Bold Italic"
c.Characters(pos1, pos2 - pos1).Font.Color = RGB(0, 0, 255)
' Point both positions to one character past end-of-line
pos2 = pos2 + 1
pos1 = pos2
Else
' Point both positions to first character
pos1 = 1
pos2 = 1
End If
' Format additional lines
Do
' Find colon character
pos2 = InStr(pos1, c.Text, ":")
' If not found, we're done
If pos2 = 0 Then Exit Do
' Make text from start of line to colon bold
c.Characters(Start:=pos1, Length:=pos2 - pos1).Font.FontStyle = "Bold"
' Find end-of-line
pos2 = InStr(pos2 + 1, c.Text, Chr(10))
' If not found, we're done
If pos2 = 0 Then Exit Do
' Point both positions to one character past end-of-line
pos2 = pos2 + 1
pos1 = pos2
DoEvents
Loop
End Sub
.