Форматирование текста в ячейке при помощи кода VBA Excel. Объект Font и его основные свойства. Примеры изменения начертания строк в заданном диапазоне.
В этой статье рассмотрены свойства шрифта (объекта Font), определяющие внешнее оформление (начертание) видимого значения ячейки. Это касается не только текста (строк), но и визуального начертания отображаемых дат и числовых значений.
Формат отображаемого значения
Когда мы из кода VBA Excel записываем в ячейку текстовое или другое значение, оно отображается в формате, присвоенном данной ячейке. Это может быть формат:
- рабочего листа по умолчанию;
- установленный для диапазона пользователем;
- примененный к диапазону из кода VBA Excel.
Если ячейка содержит текстовое значение, его начертание можно форматировать по отдельным частям (подстрокам). Такое форматирование доступно как в ручном режиме на рабочем листе, так и из кода VBA Excel.
У объекта Range есть свойство Font (шрифт), которое отвечает за форматирование (начертание) визуально отображаемого текста в ячейках рабочего листа. Его применение вызывает объект Font, который в свою очередь обладает собственным набором свойств, отвечающих за конкретный стиль начертания отображаемого значения.
Основные свойства объекта Font
Свойство | Описание | Значения |
---|---|---|
Name | наименование шрифта | «Arial», «Calibri», «Courier New», «Times New Roman» и т.д. |
Size | размер шрифта | от 1 до 409 пунктов |
Bold | полужирное начертание | True, False |
Italic | курсивное начертание | True, False |
FontStyle | заменяет Bold и Italic | «обычный», «полужирный», «курсив», «полужирный курсив» |
Superscript | надстрочный текст | True, False |
Subscript | подстрочный текст | True, False |
Underline | подчеркнутый текст | True, False |
Color* | цвет текста | от 0 до 16777215 |
*Color — это не единственное свойство, отвечающее за цвет отображаемого текста в ячейке. Оно также может принимать и другие значения, кроме указанных в таблице. Смотрите подробности в статьях Цвет текста (шрифта) в ячейке и Цвет ячейки (заливка, фон).
Примеры форматирования текста
Пример 1
В этом примере ячейкам диапазона «A1:A3» присвоим шрифты разных наименований:
1 2 3 4 5 6 7 8 |
Sub Primer1() Range("A1").Font.Name = "Courier" Range("A1") = "Шрифт «Courier»" Range("A2").Font.Name = "Verdana" Range("A2") = "Шрифт «Verdana»" Range("A3").Font.Name = "Times New Roman" Range("A3") = "Шрифт «Times New Roman»" End Sub |
Пример 2
В этом примере рассмотрим применение одного свойства объекта Font к одной ячейке:
1 2 3 4 5 6 7 8 |
Sub Primer2() Range("A5").Font.Bold = True Range("A5") = "Полужирное начертание" Range("A6").Font.FontStyle = "полужирный курсив" Range("A6") = "Полужирный курсив" Range("A7").Font.Superscript = True Range("A7") = "Надстрочное начертание" End Sub |
Пример 3
Форматирование диапазона из нескольких ячеек:
1 2 3 4 5 6 7 |
Sub Primer3() With Range("A9:C11") .Value = "Форматируем диапазон" .Font.Underline = True .Font.Color = 75962 End With End Sub |
Пример 4
Пример форматирования шрифта в разных ячейках по одному свойству:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Sub Primer4() Cells(1, 1) = "Свойство шрифта Bold = True" Cells(1, 1).Font.Bold = True Cells(2, 1) = "Свойство шрифта Color = xlGreen" Cells(2, 1).Font.Color = xlGreen Cells(3, 1) = "Свойство шрифта ColorIndex = 32" Cells(3, 1).Font.ColorIndex = 32 Cells(4, 1) = "Свойство шрифта FontStyle = ""Bold Italic""" Cells(4, 1).Font.FontStyle = "Bold Italic" Cells(5, 1) = "Свойство шрифта Italic = True" Cells(5, 1).Font.Italic = True Cells(6, 1) = "Свойство шрифта Name = ""Courier New""" Cells(6, 1).Font.Name = "Courier New" Cells(7, 1) = "Свойство шрифта Size = 14" Cells(7, 1).Font.Size = 14 Cells(8, 1) = "Свойство шрифта Subscript = True" Cells(8, 1).Font.Subscript = True Cells(9, 1) = "Свойство шрифта Superscript = True" Cells(9, 1).Font.Superscript = True Cells(10, 1) = "Свойство шрифта Underline = True" Cells(10, 1).Font.Underline = True End Sub |
Пример 2 не к одной ячейке, а к трём!!!! Где пример к одной???
Добрый день, Алексей Леонидович!
Во втором примере показано применение одного свойства объекта Font к одной ячейке.
К ячейке «A5»:
Range("A5").Font.Bold = True
К ячейке «A6»:
Range("A6").Font.FontStyle = "полужирный курсив"
К ячейке «A7»:
Range("A7").Font.Superscript = True
Применение нескольких свойств объекта Font к одной ячейке может выглядеть следующим образом:
Скажите пожалуйста, а есть ли способ подставлять вместо свойства ячейки (Bold, Underline, Italic) переменную чтобы в цикле последовательно менять свойства ячейки одной командой? Это упрощенный пример, так сказать в принципе, есть ли способ записи типа .Cells(1,1).Font.Переменная=True где Переменная это одно из Bold, Italic, Underline?
With Worksheets("Конфигурация")
For i = 1 To 3
Select Case i
Case 1
s = "Bold"
Case 2
s = "Italic"
Case 3
s = "Underline"
End Select
.Cells(15, 1).Font.?s? = True
Next i
End With
Здравствуйте, Сергей!
Если заменить
"Underline"
на"Bold Italic"
или"обычный"
, тогда можно так:С
"Underline"
такой фокус не проходит, но возвращает к обычному стилю.нет, увы. Спасибо конечно, что мимо не прошли, но я дал лишь упрощенную формулировку задачи. На самом деле я хочу работать с объектами WMI, коих, как известно огромное количество и у каждого куча свойств. Я не хочу писать многокилометровый код и все время добавлять строки. Я хочу вынести на лист excel список объектов и слева от каждого в колонках список свойств. И в цикле пробегать по объектам и по внутреннему циклу по свойствам, подставлять все по очереди и получать значения. И для добавления еще одного мне нужно будет только добавить на лист объект или свойство. В код при этом лазить не нужно будет.
Но я уперся в это вот, нужно как-то подставлять в объект вместо свойства переменную. Для этого я и сделал этот крошечный пример. Здесь никто конечно не будет перебирать свойства в таком дурацком цикле, тем более, что свойства разные по формату, кому-то нужны цифры, кому-то булево значение. Так что этот пример смысла не имеет, но дает понять задачу.
Обсуждение закрыто.