Форматирование текста в ячейке при помощи кода VBA Excel. Объект Font и его основные свойства. Примеры изменения начертания строк в заданном диапазоне.
В этой статье рассмотрены свойства шрифта (объекта Font), определяющие внешнее оформление (начертание) видимого значения ячейки. Это касается не только текста (строк), но и визуального начертания отображаемых дат и числовых значений.
Формат отображаемого значения
Когда мы из кода VBA Excel записываем в ячейку текстовое или другое значение, оно отображается в формате, присвоенном данной ячейке. Это может быть формат:
- рабочего листа по умолчанию;
- установленный для диапазона пользователем;
- примененный к диапазону из кода VBA Excel.
Если ячейка содержит текстовое значение, его начертание можно форматировать по отдельным частям (подстрокам). Такое форматирование доступно как в ручном режиме на рабочем листе, так и из кода VBA Excel.
У объекта Range есть свойство 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» присвоим шрифты разных наименований:
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 к одной ячейке:
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
Форматирование диапазона из нескольких ячеек:
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 |
Written by Puneet for Excel 2007, Excel 2010, Excel 2013, Excel 2016, Excel 2019, Excel for Mac
Key Notes
- To make changes in a font, you need to use the VBA Font object.
- There is a total of 18 properties with the font object that you can access and make changes.
VBA Font Object
In VBA, there is a font object which you can use to change properties of the font from a cell, like, font color, font size, font type, and you can also apply bold and italic to the font.
Syntax
expression.font
To use it, first, you need to define the cell address, which you can specify in the following ways.
Selection.Font
Range("A1").Font
Cells(1, 1).Font
Range("A1:A5").Font
To change the color of the font, you have two different ways:
1. Using Color Constants
Excel has a few color constants that you can use to apply color to the font. For example, if you want to apply the red color to the font in cell A1, the code would be like the below:
Range("A1").Font.Color = vbRed
In the above code, after the font object, color is the property and you have used the vbRed constant that tells VBA to apply the red color to the cell A1. There is a total of eight constants that you can use:
- vbBlack: Black
- vbRed: Red
- vbGreen: Green
- vbYellow: Yellow
- vbBlue: Blue
- vbMagenta: Magenta
- vbCyan: Cyan
- vbWhite: White
2. Using RGB
You can also use the RGB color code to apply color to the font. RGB is the combination of red, green, and blue colors, where you can create a custom color using the code. Let’s say if you want to apply a combination of green and blue color to cell A1 the code would be:
Range("A1").Font.Color = RGB(0, 255, 255)
VBA Font Size
Font object also gives you access to the size property of the font. Let’s say you want to apply the font size of 16 to the font in the cell A1, the code would be:
Range("A1").Font.Size = 16
If you want to apply font size to all cells in a worksheet you can use the following code:
Cells.Font.Size = 16
And if only want to apply font size to cells where you have data, the code would be:
ActiveSheet.UsedRange.Font.Size = 16
Or to the selected cell.
Selection.Font.Size = 16
VBA Font Name
In the same way, you can also change the font name using the name property of the font object. Let’s say you want to apply the “Consolas” font the cell A1. The code would be:
Range("A1").Font.Name = "Consolas"
While using this property, you need to type the correct name of the font that you want to apply, and if somehow the name is incorrect, it won’t show you an error.
VBA Font Bold, Italic, and Underline
There are also properties that you can use to make the font bold, italic, and underline. Below are the codes that you need to write for this.
Range("A1").Font.Bold = True
Range("A1").Font.Italic = True
Range("A1").Font.Underline = True
With these properties, you need to define TRUE or FALSE. So if the font is already bold or italic and you want to remove it, then you need to use FALSE to remove them.
Other Useful Font Properties
Here add a few more properties that can be useful for you (Strikethrough, Subscript, and Superscript).
Range("A1").Font.Strikethrough = True
Range("A1").Font.Subscript = True
Range("A1").Font.Superscript = True
More Tutorials
- Count Rows using VBA in Excel
- Excel VBA Hide and Unhide a Column or a Row
- Excel VBA Range – Working with Range and Cells in VBA
- Apply Borders on a Cell using VBA in Excel
- Find Last Row, Column, and Cell using VBA in Excel
- Insert a Row using VBA in Excel
- Merge Cells in Excel using a VBA Code
- Select a Range/Cell using VBA in Excel
- SELECT ALL the Cells in a Worksheet using a VBA Code
- ActiveCell in VBA in Excel
- Special Cells Method in VBA in Excel
- UsedRange Property in VBA in Excel
- VBA AutoFit (Rows, Column, or the Entire Worksheet)
- VBA ClearContents (from a Cell, Range, or Entire Worksheet)
- VBA Copy Range to Another Sheet + Workbook
- VBA Enter Value in a Cell (Set, Get and Change)
- VBA Insert Column (Single and Multiple)
- VBA Named Range | (Static + from Selection + Dynamic)
- VBA Range Offset
- VBA Sort Range | (Descending, Multiple Columns, Sort Orientation
- VBA Wrap Text (Cell, Range, and Entire Worksheet)
- VBA Check IF a Cell is Empty + Multiple Cells
⇠ Back to What is VBA in Excel
Helpful Links – Developer Tab – Visual Basic Editor – Run a Macro – Personal Macro Workbook – Excel Macro Recorder – VBA Interview Questions – VBA Codes
Return to VBA Code Examples
In this Article
- VBA Cell Font
- Change Font Color
- vbColor
- Color – RGB
- ColorIndex
- Font Size
- Bold Font
- Font Name
- Cell Style
VBA Cell Font
In VBA, you can change font properties using the VBA Font Property of the Range Object. Type the following code into the VBA Editor and you’ll see a list of all the options available:
Range("A1).Font.
We will discuss a few of the most common properties below.
Change Font Color
There are a few ways to set font colors.
vbColor
The easiest way to set colors is with vbColors:
Range("a1").Font.Color = vbRed
However, you’re very limited in terms of colors available. These are the only options available:
Color – RGB
You can also set colors based on RGB (Red Green Blue). Here you enter color values between 0-255 for Red, Green, and Blue. Using those three colors you can make any color:
Range("a1").Font.Color = RGB(255,255,0)
ColorIndex
VBA / Excel also has a ColorIndex property. This makes pre-built colors available to you. However, they’re stored as Index numbers, which makes it hard to know what color is what:
Range("a1").Font.ColorIndex = …..
We wrote an article about VBA Color codes, including a list of the VBA ColorIndex codes. There you can learn more about colors.
Font Size
This will set the font size to 12:
Range("a1").Font.Size = 12
or to 16:
Range("a1").Font.Size = 16
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
Learn More
Bold Font
It is easy to set a cell font to Bold:
Range("A1").Font.Bold = True
or to clear Bold formatting:
Range("A1").Font.Bold = False
Font Name
To change a font name use the Name property:
Range("A1").Font.Name = "Calibri"
Range("A1").Font.Name = "Arial"
Range("A1").Font.Name = "Times New Roman"
Cell Style
Excel offers the ability to create Cell “Styles”. Styles can be found in the Home Ribbon > Styles:
Styles allow you to save your desired Cell Formatting. Then assign that style to a new cell and all of the cell formatting is instantly applied. Including Font size, cell color, cell protections status, and anything else available from the Cell Formatting Menu:
Personally, for many of the models that I work on, I usually create an “Input” cell style:
Range("a1").Style = "Input"
By using styles you can also easily identify cell types on your worksheet. The example below will loop through all the cells in the worksheet and change any cell with Style = “Input” to “InputLocked”:
Dim Cell as Range
For Each Cell in ActiveSheet.Cells
If Cell.Style = "Input" then
Cell.Style = "InputLocked"
End If
Next Cell
In this VBA Tutorial, you learn how to change or set the font characteristics of a cell range.
This VBA Font Tutorial is accompanied by Excel workbooks containing the data and macros I use in the examples below. You can get immediate free access to these example workbooks by subscribing to the Power Spreadsheets Newsletter.
Use the following Table of Contents to navigate to the section you’re interested in.
Related Excel VBA and Macro Tutorials
The following VBA and Macro Tutorials may help you better understand and implement the contents below:
- General VBA constructs and structures:
- Learn the basics of how to work with macros here.
- Learn about essential VBA terms here.
- Learn how to enable and disable macros here.
- Learn how to work with the Visual Basic Editor (VBE) here.
- Learn how to create object references here.
- Learn about the R1C1-style system here.
- Learn how to create Sub procedures here.
- Learn how to declare and work with variables here.
- Learn how to work with VBA data types here.
- Learn how to work with object properties here.
- Learn how to work with functions in VBA here.
- Learn how to work with loops here.
- Practical VBA applications and macro examples:
- Learn how to refer to worksheets here.
- Learn how to refer to cell ranges here.
- Learn how to find the last row in a worksheet here.
- Learn how to find the last column in a worksheet here.
- Learn how to specify a column’s width here.
- Learn how to identify empty cells here.
- Learn how to clear a cell here.
You can find additional VBA and Macro Tutorials in the Archives.
#1: Change or set font with theme fonts
VBA code to change or set font with theme fonts
To change or set the font by referring to the applicable theme fonts, use a statement with the following structure:
Range.Font.ThemeFont = xlThemeFontConstant
Process to change or set font with theme fonts
To change or set the font by referring to the applicable theme fonts, follow these steps:
- Identify the cell range whose font you modify (Range).
- Refer to the Font object representing Range’s font (Font).
- Set the Font.ThemeFont property to an xlThemeFont constant (Font.ThemeFont = xlThemeFontConstant), which specifies the theme font to be used.
VBA statement explanation
Item: Range
Range object representing the cell range whose font you modify.
You can usually work with, among others, the following properties to refer to this Range object:
- Worksheet.Range.
- Worksheet.Cells.
Item: Font
The Range.Font property returns a Font object representing Range’s font.
Item: ThemeFont
The Font.ThemeFont property sets the font by referring to the applicable theme fonts.
Item: =
The assignment operator assigns a new value (xlThemeFontConstant) to the Font.ThemeFont property.
Item: xlThemeFontConstant
The constants in the xlThemeFont enumeration specify the theme font. Therefore, set the Font.ThemeFont property to one of the following xlThemeFont constants:
xlThemeFont constant | Value | Description |
xlThemeFontMajor | 2 | Major theme font |
xlThemeFontMinor | 1 | Minor theme font |
xlThemeFontNone | 0 | Don’t use a theme font |
Macro example to change or set font with theme fonts
The following macro example sets the font in cell A5 (Range(“A5”)) of the “VBA Font” worksheet (Worksheets(“VBA Font”)) in the workbook where the macro is stored (ThisWorkbook) to the major theme font (font.ThemeFont = xlThemeFontMajor).
Sub fontThemeFont() 'Source: https://powerspreadsheets.com/ 'sets the font by referring to applicable theme fonts 'For further information: https://powerspreadsheets.com/excel-vba-font/ 'specify the theme font from the applied font scheme ThisWorkbook.Worksheets("VBA Font").Range("A5").font.ThemeFont = xlThemeFontMajor End Sub
Effects of executing macro example to change or set font with theme fonts
The following GIF illustrates the results of executing the macro example. As expected, Excel sets the font of cell A5 to the major theme font.
#2: Change or set font name
VBA code to change or set font name
To change or set the font name, use a statement with the following structure:
Range.Font.Name = "FontName"
Process to change or set font name
To change or set the font name, follow these steps:
- Identify the cell range whose font you name you change (Range).
- Refer to the Font object representing Range’s font (Font).
- Set the Font.Name property to a string specifying the font you use (Font.Name = “FontName”).
VBA statement explanation
Item: Range
Range object representing the cell range whose font name you change.
You can usually work with, among others, the following properties to refer to this Range object:
- Worksheet.Range.
- Worksheet.Cells.
Item: Font
The Range.Font property returns a Font object representing Range’s font.
Item: Name
The Font.Name property sets the font’s name.
Item: =
The assignment operator assigns a new value (“FontName”) to the Font.Name property.
Item: “FontName”
Set the Font.Name property to a string specifying the font you use (FontName).
If you explicitly declare a variable to represent “FontName”, work with the String data type.
Macro example to change or set font name
The following macro example sets the font in cell A6 (Range(“A6”)) of the “VBA Font” worksheet (Worksheets(“VBA Font”)) in the workbook where the macro is stored (ThisWorkbook) to Verdana (font.Name = “Verdana”).
Sub fontName() 'Source: https://powerspreadsheets.com/ 'sets the font 'For further information: https://powerspreadsheets.com/excel-vba-font/ 'specify the font name ThisWorkbook.Worksheets("VBA Font").Range("A6").font.Name = "Calibri" End Sub
Effects of executing macro example to change or set font name
The following GIF illustrates the results of executing the macro example. As expected, Excel sets the font of cell A6 to Verdana.
#3: Change or set font size
VBA code to change or set font size
To change or set the font size, use a statement with the following structure:
Range.Font.Size = FontSize#
Process to change or set font size
To change or set the font size, follow these steps:
- Identify the cell range whose font size you change (Range).
- Refer to the Font object representing Range’s font (Font).
- Set the Font.Size property to a number specifying the size (in points) of the font you use (Font.Size = FontSize#).
VBA statement explanation
Item: Range
Range object representing the cell range whose font size you change.
You can usually work with, among others, the following properties to refer to this Range object:
- Worksheet.Range.
- Worksheet.Cells.
Item: Font
The Range.Font property returns a Font object representing Range’s font.
Item: Size
The Font.Size property sets the font’s size.
Item: =
The assignment operator assigns a new value (FontSize#) to the Font.Size property.
Item: FontSize#
Set the Font.Size property to a number specifying the size (in points) of the font you use (FontSize#).
Macro example to change or set font size
The following macro example sets the font size of cell A7 (Range(“A7”)) of the “VBA Font” worksheet (Worksheets(“VBA Font”)) in the workbook where the macro is stored (ThisWorkbook) to 13 (font.Size = 13).
Sub fontSize() 'Source: https://powerspreadsheets.com/ 'sets the font size 'For further information: https://powerspreadsheets.com/excel-vba-font/ 'specify the font size ThisWorkbook.Worksheets("VBA Font").Range("A7").font.Size = 13 End Sub
Effects of executing macro example to change or set font size
The following GIF illustrates the results of executing the macro example. As expected, Excel sets the font size of cell A7 to 13.
#4: Change or set font style
VBA code to change or set font style
To change or set the font style, use a statement with the following structure:
Range.Font.FontStyle = "FontStyle"
Process to change or set font style
To change or set the font style, follow these steps:
- Identify the cell range whose font you style you change (Range).
- Refer to the Font object representing Range’s font (Font).
- Set the Font.Style property to a string specifying the font style you use (Font.FontStyle = “FontStyle”).
VBA statement explanation
Item: Range
Range object representing the cell range whose font style you change.
You can usually work with, among others, the following properties to refer to this Range object:
- Worksheet.Range.
- Worksheet.Cells.
Item: Font
The Range.Font property returns a Font object representing Range’s font.
Item: FontStyle
The Font.FontStyle property sets the font style.
Item: =
The assignment operator assigns a new value (“FontStyle”) to the Font.FontStyle property.
Item: “FontStyle”
Set the Font.FontStyle property to one of the following strings (FontStyle):
- Regular;
- Italic;
- Bold; or
- Bold Italic.
Macro example to change or set font style
The following macro example sets the font style of cell A8 (Range(“A8”)) of the “VBA Font” worksheet (Worksheets(“VBA Font”)) in the workbook where the macro is stored (ThisWorkbook) to bold and italic (font.fontStyle = “Bold Italic”).
Sub fontStyle() 'Source: https://powerspreadsheets.com/ 'sets the font style 'For further information: https://powerspreadsheets.com/excel-vba-font/ 'specify the font style ThisWorkbook.Worksheets("VBA Font").Range("A8").font.fontStyle = "Bold Italic" End Sub
Effects of executing macro example to change or set font style
The following GIF illustrates the results of executing the macro example. As expected, Excel sets the font style of cell A8 to bold and italic.
#5: Set font bold
VBA code to set font bold
To set the font to bold, use a statement with the following structure:
Range.Font.Bold = True
Process to set font bold
To set the font to bold, follow these steps:
- Identify the cell range whose font you set to bold (Range).
- Refer to the Font object representing Range’s font (Font).
- Set the Font.Bold property to True (Font.Bold = True).
VBA statement explanation
Item: Range
Range object representing the cell range whose font you set to bold.
You can usually work with, among others, the following properties to refer to this Range object:
- Worksheet.Range.
- Worksheet.Cells.
Item: Font
The Range.Font property returns a Font object representing Range’s font.
Item: Bold
The Font.Bold property sets the font to bold (or not bold).
Item: =
The assignment operator assigns a new value (True) to the Font.Bold property.
Item: True
To make the font bold, set the Font.Bold property to True.
To remove the font’s bold formatting, set the Font.Bold property to False.
Macro example to set font bold
The following macro example makes the font of cell A9 (Range(“A9”)) of the “VBA Font” worksheet (Worksheets(“VBA Font”)) in the workbook where the macro is stored (ThisWorkbook) bold (font.Bold = True).
Sub fontBold() 'Source: https://powerspreadsheets.com/ 'sets font to bold 'For further information: https://powerspreadsheets.com/excel-vba-font/ 'make font bold ThisWorkbook.Worksheets("VBA Font").Range("A9").font.Bold = True End Sub
Effects of executing macro example to set font bold
The following GIF illustrates the results of executing the macro example. As expected, Excel makes the font of cell A9 bold.
#6: Set font italic
VBA code to set font italic
To set the font to italic, use a statement with the following structure:
Range.Font.Italic = True
Process to set font italic
To set the font to italic, follow these steps:
- Identify the cell range whose font you set to italic (Range).
- Refer to the Font object representing Range’s font (Font).
- Set the Font.Italic property to True (Font.Italic = True).
VBA statement explanation
Item: Range
Range object representing the cell range whose font you set to italic.
You can usually work with, among others, the following properties to refer to this Range object:
- Worksheet.Range.
- Worksheet.Cells.
Item: Font
The Range.Font property returns a Font object representing Range’s font.
Item: Italic
The Font.Italic property sets the font to italic (or not italic).
Item: =
The assignment operator assigns a new value (True) to the Font.Italic property.
Item: True
To make the font italic, set the Font.Italic property to True.
To remove the font’s italic formatting, set the Font.Bold property to False.
Macro example to set font italic
The following macro example makes the font of cell A10 (Range(“A10”)) of the “VBA Font” worksheet (Worksheets(“VBA Font”)) in the workbook where the macro is stored (ThisWorkbook) italic (font.Italic = True).
Sub fontItalic() 'Source: https://powerspreadsheets.com/ 'sets font style to italic 'For further information: https://powerspreadsheets.com/excel-vba-font/ 'make font italic ThisWorkbook.Worksheets("VBA Font").Range("A10").font.Italic = True End Sub
Effects of executing macro example to set font italic
The following GIF illustrates the results of executing the macro example. As expected, Excel makes the font of cell A10 italic.
#7: Set font underline
VBA code to set font underline
To underline the font, use a statement with the following structure:
Range.Font.Underline = xlUnderlineStyleConstant
Process to set font underline
To underline the font, follow these steps:
- Identify the cell range whose font you underline (Range).
- Refer to the Font object representing Range’s font (Font).
- Set the Font.Underline property to an xlUnderlineStyle constant (Font.Underline = xlUnderlineStyleConstant), which specifies the type of font underline.
VBA statement explanation
Item: Range
Range object representing the cell range whose font you underline.
You can usually work with, among others, the following properties to refer to this Range object:
- Worksheet.Range.
- Worksheet.Cells.
Item: Font
The Range.Font property returns a Font object representing Range’s font.
Item: Underline
The Font.Underline property sets the type of font underline.
Item: =
The assignment operator assigns a new value (xlUnderlineStyleConstant) to the Font.Underline property.
Item: xlUnderlineStyleConstant
The constants in the xlUnderlineStyle enumeration specify the type of font underline. Therefore, set the Font.Underline property to one of the following xlUnderlineStyle constants:
xlUnderlineStyle constant | Value |
xlUnderlineStyleDouble | -4119 |
xlUnderlineStyleDoubleAccounting | 5 |
xlUnderlineStyleNone | -4142 |
xlUnderlineStyleSingle | 2 |
xlUnderlineStyleSingleAccounting | 4 |
Macro example to set font underline
The following macro example underlines with a double line (font.Underline = xlUnderlineStyleDouble) the font of cell A11 (Range(“A11”)) of the “VBA Font” worksheet (Worksheets(“VBA Font”)) in the workbook where the macro is stored (ThisWorkbook).
Sub fontUnderline() 'Source: https://powerspreadsheets.com/ 'underlines the font 'For further information: https://powerspreadsheets.com/excel-vba-font/ 'underline the font ThisWorkbook.Worksheets("VBA Font").Range("A11").font.Underline = xlUnderlineStyleDouble End Sub
Effects of executing macro example to set font underline
The following GIF illustrates the results of executing the macro example. As expected, Excel underlines the font of cell A11 with a double line.
#8: Set font strikethrough
VBA code to set font strikethrough
To strike the font through, use a statement with the following structure:
Range.Font.Strikethrough = True
Process to set font strikethrough
To strike the font through, follow these steps:
- Identify the cell range whose font you strike through (Range).
- Refer to the Font object representing Range’s font (Font).
- Set the Font.Strikethrough property to True (Font.Strikethrough = True).
VBA statement explanation
Item: Range
Range object representing the cell range whose font you strike through.
You can usually work with, among others, the following properties to refer to this Range object:
- Worksheet.Range.
- Worksheet.Cells.
Item: Font
The Range.Font property returns a Font object representing Range’s font.
Item: Strikethrough
The Font.Strikethrough property strikes through (or not) the font with a horizontal line.
Item: =
The assignment operator assigns a new value (True) to the Font.Strikethrough property.
Item: True
To strike through the font with a horizontal line, set the Font.Strikethrough property to True.
To remove a font’s strike through horizontal line, set the Font.Strikethrough property to False.
Macro example to set font strikethrough
The following macro example strikes through (font.Strikethrough = True) the font of cell A12 (Range(“A12”)) of the “VBA Font” worksheet (Worksheets(“VBA Font”)) in the workbook where the macro is stored (ThisWorkbook).
Sub fontStrikethrough() 'Source: https://powerspreadsheets.com/ 'strikes font through 'For further information: https://powerspreadsheets.com/excel-vba-font/ 'strike through font ThisWorkbook.Worksheets("VBA Font").Range("A12").font.Strikethrough = True End Sub
Effects of executing macro example to set font strikethrough
The following GIF illustrates the results of executing the macro example. As expected, Excel strikes the font of cell A12 through.
#9: Change or set font color with RGB color model
VBA code to change or set font color with RGB color model
To change or set the font color with the RGB color model, use a statement with the following structure:
Range.Font.Color = RGB(Red, Green, Blue)
Process to change or set font color with RGB color model
To change or set the font color with the RGB color model, follow these steps:
- Identify the cell range whose font color you change with the RGB color model (Range).
- Refer to the Font object representing Range’s font (Font).
- Specify the red, green and blue components of the color with the RGB function (RGB(Red, Green, Blue)).
- Set the Font.Color property to the value returned by the RGB Function (Font.Color = RGB(Red, Green, Blue)).
VBA statement explanation
Item: Range
Range object representing the cell range whose font color you change with the RGB color model.
You can usually work with, among others, the following properties to refer to this Range object:
- Worksheet.Range.
- Worksheet.Cells.
Item: Font
The Range.Font property returns a Font object representing Range’s font.
Item: Color
The Font.Color property sets the font color using a numeric value.
Item: =
The assignment operator assigns a new value (returned by the RGB function) to the Font.Color property.
Item: RGB(Red, Green, Blue)
Theoretically, you can set the Font.Color property to a value specifying the font color you use.
In practice, you can use the RGB function to obtain the value specifying the font color. For these purposes, specify the Red, Green and Blue components of the color.
When working with the RGB function, consider the following:
- Specify each component (Red, Green and Blue) as numbers between 0 and 255 (inclusive).
- If you use a value exceeding 255, VBA assumes that the value is 255.
Macro example to change or set font color with RGB color model
The following macro example sets the font color of cell A13 (Range(“A13”)) of the “VBA Font” worksheet (Worksheets(“VBA Font”)) in the workbook where the macro is stored (ThisWorkbook) to red with the RGB color model (font.Color = RGB(255, 0, 0)).
Sub fontColorRgb() 'Source: https://powerspreadsheets.com/ 'sets font color using RGB color model 'For further information: https://powerspreadsheets.com/excel-vba-font/ 'specify font color with RGB function ThisWorkbook.Worksheets("VBA Font").Range("A13").font.Color = RGB(255, 0, 0) End Sub
Effects of executing macro example to change or set font color with RGB color model
The following GIF illustrates the results of executing the macro example. As expected, Excel sets the font color of cell A13 to red with the RGB color model.
#10: Change or set font color with color index (ColorIndex)
VBA code to change or set font color with color index (ColorIndex)
To change or set the font color with the ColorIndex property, use a statement with the following structure:
Range.Font.ColorIndex = ColorIndex#
Process to change or set font color with color index (ColorIndex)
To change or set the font color with the ColorIndex property, follow these steps:
- Identify the cell range whose font color you change with the ColorIndex property (Range).
- Refer to the Font object representing Range’s font (Font).
- Set the Font.ColorIndex property to a value between 0 and 56 or an xlColorIndex constant (Font.ColorIndex = ColorIndex#).
VBA statement explanation
Item: Range
Range object representing the cell range whose font color you change with the ColorIndex property.
You can usually work with, among others, the following properties to refer to this Range object:
- Worksheet.Range.
- Worksheet.Cells.
Item: Font
The Range.Font property returns a Font object representing Range’s font.
Item: ColorIndex
The Font.ColorIndex property sets the font color using the current color palette or a constant from the xlColorIndex enumeration.
Item: =
The assignment operator assigns a new value (ColorIndex#) to the Font.ColorIndex property.
Item: ColorIndex#
Set the Font.ColorIndex to one of the following:
- A value between 0 and 56, representing a color from the current color palette.
- One of the following xlColorIndex constants:
- xlColorIndexAutomatic (-4105), which represents automatic color.
- xlColorIndexNone (-4142), which represents no color.
Macro example to change or set font color with color index (ColorIndex)
The following macro example sets the font color of cell A14 (Range(“A14”)) of the “VBA Font” worksheet (Worksheets(“VBA Font”)) in the workbook where the macro is stored (ThisWorkbook) to blue with the ColorIndex property (font.ColorIndex = 5).
Sub fontColorIndex() 'Source: https://powerspreadsheets.com/ 'sets the font color by referring to the current color palette or a constant 'For further information: https://powerspreadsheets.com/excel-vba-font/ 'specify font color as index value of the current color palette or an XlColorIndex constant ThisWorkbook.Worksheets("VBA Font").Range("A14").font.ColorIndex = 5 End Sub
Effects of executing macro example to change or set font color with color index (ColorIndex)
The following GIF illustrates the results of executing the macro example. As expected, Excel sets the font color of cell A14 to blue with the ColorIndex property.
#11: Set font color to Automatic
VBA code to set font color to Automatic
To set the font color to Automatic (within the color palette), use a statement with the following structure:
Range.Font.ColorIndex = xlColorIndexAutomatic
Process to set font color to Automatic
To set the font color to Automatic (within the color palette), follow these steps:
- Identify the cell range whose font color you set to Automatic (Range).
- Refer to the Font object representing Range’s font (Font).
- Set the Font.ColorIndex property to xlColorIndexAutomatic (Font.ColorIndex = xlColorIndexAutomatic).
VBA statement explanation
Item: Range
Range object representing the cell range whose font color you set to Automatic (within the color palette).
You can usually work with, among others, the following properties to refer to this Range object:
- Worksheet.Range.
- Worksheet.Cells.
Item: Font
The Range.Font property returns a Font object representing Range’s font.
Item: ColorIndex
The Font.ColorIndex property sets the font color using the current color palette or a constant from the xlColorIndex enumeration.
Item: =
The assignment operator assigns a new value (xlColorIndexAutomatic) to the Font.ColorIndex property.
Item: xlColorIndexAutomatic
To set the font color to Automatic, set the Font.ColorIndex to:
- xlColorIndexAutomatic (-4105); or
- 0.
Macro example to set font color to Automatic
The following macro example sets the font color of cell A15 (Range(“A15”)) of the “VBA Font” worksheet (Worksheets(“VBA Font”)) in the workbook where the macro is stored (ThisWorkbook) to Automatic (font.ColorIndex = xlColorIndexAutomatic).
Sub fontColorAutomatic() 'Source: https://powerspreadsheets.com/ 'sets the font color to automatic 'For further information: https://powerspreadsheets.com/excel-vba-font/ 'specify the font color as Automatic ThisWorkbook.Worksheets("VBA Font").Range("A15").font.ColorIndex = xlColorIndexAutomatic End Sub
Effects of executing macro example to set font color to Automatic
The following GIF illustrates the results of executing the macro example. As expected, Excel sets the font color of cell A15 to Automatic (from blue).
#12: Change or set font color with theme color scheme (ThemeColor, xlThemeColorAccent)
VBA code to change or set font color with theme color scheme (ThemeColor, xlThemeColorAccent)
To change or set the font color with the theme color scheme, use a statement with the following structure:
Range.Font.ThemeColor = xlThemeColorConstant
Process to change or set font color with theme color scheme (ThemeColor, xlThemeColorAccent)
To change or set the font color with the theme color scheme, follow these steps:
- Identify the cell range whose font color you change with the theme color scheme (Range).
- Refer to the Font object representing Range’s font (Font).
- Set the Font.ThemeColor property to an xlThemeColor constant (Font.ThemeColor = xlThemeColorConstant).
VBA statement explanation
Item: Range
Range object representing the cell range whose font color you change with the theme color scheme.
You can usually work with, among others, the following properties to refer to this Range object:
- Worksheet.Range.
- Worksheet.Cells.
Item: Font
The Range.Font property returns a Font object representing Range’s font.
Item: ThemeColor
The Font.ThemeColor property sets the font color using the theme color scheme.
Item: =
The assignment operator assigns a new value (xlThemeColorConstant) to the Font.ThemeColor property.
Item: xlThemeColorConstant
The constants in the xlThemeColor enumeration specify the theme color. Therefore, set the Font.ThemeColor property to one of the following xlThemeColor constants:
xlThemeColor constant | Value | Description |
xlThemeColorAccent1 | 5 | Accent 1. |
xlThemeColorAccent2 | 6 | Accent 2. |
xlThemeColorAccent3 | 7 | Accent 3. |
xlThemeColorAccent4 | 8 | Accent 4. |
xlThemeColorAccent5 | 9 | Accent 5. |
xlThemeColorAccent6 | 10 | Accent 6. |
xlThemeColorDark1 | 1 | Dark 1. |
xlThemeColorDark2 | 3 | Dark 2. |
xlThemeColorFollowedHyperlink | 12 | Followed hyperlink. |
xlThemeColorHyperlink | 11 | Hyperlink. |
xlThemeColorLight1 | 2 | Light 1. |
xlThemeColorLight2 | 4 | Light 2. |
Macro example to change or set font color with theme color scheme (ThemeColor, xlThemeColorAccent)
The following macro example sets the font color of cell A16 (Range(“A16”)) of the “VBA Font” worksheet (Worksheets(“VBA Font”)) in the workbook where the macro is stored (ThisWorkbook) to the accent 1 of the theme color (font.ThemeColor = xlThemeColorAccent1).
Sub fontThemeColor() 'Source: https://powerspreadsheets.com/ 'sets font color by referring to applicable theme colors 'For further information: https://powerspreadsheets.com/excel-vba-font/ 'specify the font color from the theme color scheme ThisWorkbook.Worksheets("VBA Font").Range("A16").font.ThemeColor = xlThemeColorAccent1 End Sub
Effects of executing macro example to change or set font color with theme color scheme (ThemeColor, xlThemeColorAccent)
The following GIF illustrates the results of executing the macro example. As expected, Excel sets the font color of cell A16 to the accent 1 of the theme color.
#13: Change or set font tint and shade
VBA code to change or set font tint and shade
To change or set the font tint and shade, use a statement with the following structure:
Range.Font.TintAndShade = TintAndShade#
Process to change or set font tint and shade
To change or set the font tint and shade, follow these steps:
- Identify the cell range whose font tint and shade you change (Range).
- Refer to the Font object representing Range’s font (Font).
- Set the Font.TintAndShade property to a value (Font.TintAndShade = TintAndShade#) between -1 (darkest shade) and 1 (lightest shade).
VBA statement explanation
Item: Range
Range object representing the cell range whose font tint and shade you change.
You can usually work with, among others, the following properties to refer to this Range object:
- Worksheet.Range.
- Worksheet.Cells.
Item: Font
The Range.Font property returns a Font object representing Range’s font.
Item: TintAndShade
The Font.TintAndShade property lightens or darkens the font color.
Item: =
The assignment operator assigns a new value (TintAndShade#) to the Font.TintAndShade property.
Item: TintAndShade#
Set the Font.TintAndShade property to a value between -1 (darkest shade) and 1 (lightest shade). If you attempt to set the Font.TintAndShade property to a value outside this range, a run-time error (5: Invalid procedure call or argument) occurs.
Macro example to change or set font tint and shade
The following macro example lightens the font (font.TintAndShade = 0.5) of cell A17 (Range(“A17”)) of the “VBA Font” worksheet (Worksheets(“VBA Font”)) in the workbook where the macro is stored (ThisWorkbook).
Sub fontTintAndShade() 'Source: https://powerspreadsheets.com/ 'lightens or darkens the font color 'For further information: https://powerspreadsheets.com/excel-vba-font/ 'lighten or darken the font color ThisWorkbook.Worksheets("VBA Font").Range("A17").font.TintAndShade = 0.5 End Sub
Effects of executing macro example to change or set font tint and shade
The following GIF illustrates the results of executing the macro example. As expected, Excel lightens the font color of cell A17.
#14: Set font subscript
VBA code to set font subscript
To format the font as subscript, use a statement with the following structure:
Range.Font.Subscript = True
Process to set font subscript
To format the font as subscript, follow these steps:
- Identify the cell range whose font you format as subscript (Range).
- Refer to the Font object representing Range’s font (Font).
- Set the Font.Subscript property to True (Font.Subscript = True).
VBA statement explanation
Item: Range
Range object representing the cell range whose font you format as subscript.
You can usually work with, among others, the following properties to refer to this Range object:
- Worksheet.Range.
- Worksheet.Cells.
Item: Font
The Range.Font property returns a Font object representing Range’s font.
Item: Subscript
The Font.Subscript property formats the font as subscript (or not).
Item: =
The assignment operator assigns a new value (True) to the Font.Subscript property.
Item: True
To format the font as subscript, set the Font.Subscript property to True.
To remove the font’s subscript formatting, set the Font.Subscript property to False.
Macro example to set font subscript
The following macro example formats the font of cell A18 (Range(“A18”)) of the “VBA Font” worksheet (Worksheets(“VBA Font”)) in the workbook where the macro is stored (ThisWorkbook) as subscript (font.Subscript = True).
Sub fontSubscript() 'Source: https://powerspreadsheets.com/ 'formats the font as a subscript 'For further information: https://powerspreadsheets.com/excel-vba-font/ 'format the font as subscript ThisWorkbook.Worksheets("VBA Font").Range("A18").font.Subscript = True End Sub
Effects of executing macro example to set font subscript
The following GIF illustrates the results of executing the macro example. As expected, Excel formats the font of cell A18 as subscript.
#15: Set font superscript
VBA code to set font superscript
To format the font as superscript, use a statement with the following structure:
Range.Font.Superscript = True
Process to set font superscript
To format the font as superscript, follow these steps:
- Identify the cell range whose font you format as superscript (Range).
- Refer to the Font object representing Range’s font (Font).
- Set the Font.Superscript property to True (Font.Superscript = True).
VBA statement explanation
Item: Range
Range object representing the cell range whose font you format as superscript.
You can usually work with, among others, the following properties to refer to this Range object:
- Worksheet.Range.
- Worksheet.Cells.
Item: Font
The Range.Font property returns a Font object representing Range’s font.
Item: Superscript
The Font.Superscript property formats the font as superscript (or not).
Item: =
The assignment operator assigns a new value (True) to the Font.SuperScript property.
Item: True
To format the font as superscript, set the Font.Superscript to True.
To remove the font’s superscript formatting, set the Font.Superscript to False.
Macro example to set font superscript
The following macro example formats the font of cell A19 (Range(“A19”)) of the “VBA Font” worksheet (Worksheets(“VBA Font”)) in the workbook where the macro is stored (ThisWorkbook) as superscript (font.Superscript = True).
Sub fontSuperscript() 'Source: https://powerspreadsheets.com/ 'formats the font as a superscript 'For further information: https://powerspreadsheets.com/excel-vba-font/ 'format the font as superscript ThisWorkbook.Worksheets("VBA Font").Range("A19").font.Superscript = True End Sub
Effects of executing macro example to set font superscript
The following GIF illustrates the results of executing the macro example. As expected, Excel formats the font of cell A19 as superscript.
Learn more about specifying font characteristics with VBA
Workbook examples used in this VBA Font Tutorial
You can get immediate free access to the example workbooks that accompany this VBA Font Tutorial by subscribing to the Power Spreadsheets Newsletter.
References to constructs used in this VBA Font Tutorial
Use the following links to visit the appropriate webpage in the Microsoft Developer Network:
- Refer to the workbook containing the cell range you work with:
- Workbook object.
- Application.ThisWorkbook property.
- Refer to the worksheet containing the cell range you work with:
- Worksheet object.
- Workbook.Worksheets property.
- Refer to the cell range you work with:
- Range object.
- Worksheet.Range property.
- Refer to a cell range’s font:
- Font object.
- Range.Font property.
- Set or change a font’s properties:
- Font.Bold property.
- Font.Color property.
- Font.ColorIndex property and xlColorIndex enumeration.
- Font.FontStyle property.
- Font.Italic property.
- Font.Name property.
- Font.Size property.
- Font.Strikethrough property.
- Font.Subscript property.
- Font.Superscript property.
- Font.ThemeColor property and xlThemeColor enumeration.
- Font.ThemeFont property and xlThemeFont enumeration.
- Font.TintAndShade property.
- Font.Underline property and xlUnderlineStyle enumeration.
- Assign a new value to a property:
- = operator.
- Obtain a color with the RGB color model:
- RGB function.
- Work with variables and data types:
- Boolean data type.
- String data type.
В VBA вы можете изменить свойства шрифта с помощью свойства шрифта VBA объекта Range. Введите следующий код в редактор VBA, и вы увидите список всех доступных вариантов:
Ниже мы обсудим несколько наиболее распространенных свойств.
Изменить цвет шрифта
Есть несколько способов установить цвета шрифта.
vbColor
Самый простой способ установить цвета — использовать vbColors:
1 | Диапазон («a1»). Font.Color = vbRed |
Однако количество доступных цветов очень ограничено. Это единственные доступные варианты:
Цвет — RGB
Вы также можете установить цвета на основе RGB (красный, зеленый, синий). Здесь вы вводите значения цвета от 0 до 255 для красного, зеленого и синего. Используя эти три цвета, вы можете сделать любой цвет:
1 | Диапазон («a1»). Font.Color = RGB (255,255,0) |
ColorIndex
VBA / Excel также имеет свойство ColorIndex. Это делает вам доступными предварительно созданные цвета. Однако они хранятся в виде порядковых номеров, что затрудняет определение того, что это за цвет:
1 | Диапазон («a1»). Font.ColorIndex =… |
Мы написали статью о цветовых кодах VBA, включая список кодов VBA ColorIndex. Там вы можете узнать больше о цветах.
Размер шрифта
Это установит размер шрифта на 12:
1 | Диапазон («a1»). Размер шрифта = 12 |
или до 16:
1 | Диапазон («a1»). Размер шрифта = 16 |
Жирный шрифт
Установить полужирный шрифт ячейки легко:
1 | Диапазон («A1»). Font.Bold = True |
или очистить форматирование полужирным шрифтом:
1 | Диапазон («A1»). Font.Bold = False |
Название шрифта
Чтобы изменить название шрифта, используйте Имя имущество:
1 | Диапазон («A1»). Font.Name = «Calibri» |
1 | Диапазон («A1»). Font.Name = «Arial» |
1 | Диапазон («A1»). Font.Name = «Times New Roman» |
Стиль ячейки
Excel предлагает возможность создавать «стили» ячеек. Стили можно найти в Главная Лента> Стили:
Стили позволяют сохранить желаемое форматирование ячеек. Затем назначьте этот стиль новой ячейке, и все форматирование ячейки будет немедленно применено. В том числе размер шрифта, цвет ячеек, состояние защиты ячеек и все остальное, что доступно в меню форматирования ячеек:
Лично для многих моделей, над которыми я работаю, я обычно создаю стиль ячейки «Вход»:
1 | Диапазон («a1»). Style = «Input» |
Используя стили, вы также можете легко определять типы ячеек на вашем листе. В приведенном ниже примере выполняется цикл по всем ячейкам на листе и изменяется любая ячейка со Style = «Input» на «InputLocked»:
1234567 | Тусклая ячейка как диапазонДля каждой ячейки в ActiveSheet.CellsЕсли Cell.Style = «Input», тогдаCell.Style = «InputLocked»Конец, еслиСледующая ячейка |
Вы поможете развитию сайта, поделившись страницей с друзьями
Содержание
- Формат отображаемого значения
- Применение стилей к ячейкам листа
- VBA-макрос: заливка, шрифт, линии границ, ширина столбцов и высота строк
- Вывод сообщений о числовых значениях цветов
- Выравнивание по горизонтали
- Основные свойства объекта Font
- Синтаксис и параметры
- Именные форматы даты и времени
- Именованные форматы чисел
- Символы для форматов даты и времени
- Заливка ячейки цветом в VBA Excel
- Создание новых стилей
- Выравнивание по вертикали
- Зачем нужны именованные стили
- Описание VBA-макроса для формата ячеек таблицы Excel
- Использование предопределенных констант
- Изменение существующих стилей
Формат отображаемого значения
Когда мы из кода VBA Excel записываем в ячейку текстовое или другое значение, оно отображается в формате, присвоенном данной ячейке. Это может быть формат:
- рабочего листа по умолчанию;
- установленный для диапазона пользователем;
- примененный к диапазону из кода VBA Excel.
Если ячейка содержит текстовое значение, его начертание можно форматировать по отдельным частям (подстрокам). Такое форматирование доступно как в ручном режиме на рабочем листе, так и из кода VBA Excel.
У объекта Range есть свойство Font (шрифт), которое отвечает за форматирование (начертание) визуально отображаемого текста в ячейках рабочего листа. Его применение вызывает объект Font, который в свою очередь обладает собственным набором свойств, отвечающих за конкретный стиль начертания отображаемого значения.
Применение стилей к ячейкам листа
В Excel изначально установлено множество встроенных стилей. Найти их можно в меню Стили ячеек, которая расположена на вкладке Главная -> Стили.
Откроется галерея стилей (рисунок справа).
Чтобы применить стиль к выделенной ячейке или диапазону, необходимо щелкнуть левой кнопкой мыши по нужному стилю. Имеется также очень удобная возможность предварительного просмотра: при наведении курсора на стиль, Вы будете видеть как меняется стиль ячейки.
После применения стиля из галереи можно будет накладывать дополнительное форматирование на ячейки.
В процессе запыления данных сотрудниками отдела на некоторых листах были изменены форматы ячеек:
Необходимо сбросить форматирование ячеек и сделать так чтобы на всех таблицах планов выполнения работ были одинаковые форматы отображения данных. Формат ячеек для исходной таблицы должен быть закреплен за шаблоном, чтобы можно было сделать сброс и применять заданный стиль оформления в дальнейшем.
Чтобы выполнять такие задачи вручную можно попытаться облегчить процесс настройки множества опций форматирования для многих диапазонов ячеек на разных листах и рабочих книгах. Плюс к о всему можно ошибиться и применить несколько другие настройки форматирования.
Макросы Excel прекрасно справляются с форматированием ячеек на рабочих листах. Кроме того, делают это быстро и в полностью автоматическом режиме. Воспользуемся этими преимуществами и для решения данной задачи напишем свой код VBA-макроса. Он поможет нам быстро и безопасно сбрасывать форматы на исходный предварительно заданный в шаблоне главной таблицы.
Чтобы написать свой код макроса откройте специальный VBA-редактор в Excel: «РАЗРАБОТЧИК»-«Код»-«Visual Basic» или нажмите комбинацию клавиш ALT+F11:
В редакторе создайте новый модуль выбрав инструмент «Insert»-«Module» и введите в него такой VBA-код макроса:
SubSbrosFormat()
IfTypeName(Selection) <>"Range"Then Exit Sub
WithSelection
.HorizontalAlignment = xlVAlignCenter
.VerticalAlignment = xlVAlignCenter
.WrapText =True
.Borders.LineStyle = xlContinuous
.Borders.Weight = xlThin
.Font.ColorIndex = xlColorIndexAutomatic
.Interior.ColorIndex = xlColorIndexAutomatic
.Columns.AutoFit
.Rows.AutoFit
End With
End Sub
Теперь если нам нужно сбросить форматирование таблицы на исходный формат отображения ее данных, выделите диапазон ячеек A1:E20 и запустите макрос: «РАЗРАБОЧТИК»-«Код»-«Макросы»-«SbrosFormat»-«Выполнить». Результат работы макроса изображен ниже на рисунке:
Таблица приобрела формат, который определен макросом. Таким образом код VBA нам позволяет сбросить любые изменения формата ячеек на предустановленный автором отчета.
Вывод сообщений о числовых значениях цветов
Числовые значения цветов запомнить невозможно, поэтому часто возникает вопрос о том, как узнать числовое значение фона ячейки. Следующий код VBA Excel выводит сообщения о числовых значениях присвоенных ранее цветов.
Пример кода 2:
Sub ColorTest2() MsgBox Range(“A1”).Interior.Color MsgBox Range(“A4:D8”).Interior.Color MsgBox Range(“C12:D17”).Cells(4).Interior.Color MsgBox Cells(3, 6).Interior.Color End Sub |
Вместо вывода сообщений можно присвоить числовые значения цветов переменным, объявив их как Long.
Выравнивание по горизонтали
Для выравнивания текста в ячейках рабочего листа по горизонтали в VBA Excel используется свойство HorizontalAlignment объекта Range. Оно может принимать следующие значения:
Выравнивание | Константа | Значение |
По левому краю | xlLeft | -4131 |
По центру | xlCenter | -4108 |
По правому краю | xlRight | -4152 |
Константу использовать удобнее, так как ее можно выбрать из подсказок и легче запомнить. Но и присвоение свойству HorizontalAlignment непосредственно числового значения константы будет работать точно так же.
Пример 1
Заполним три первые ячейки листа Excel текстом, соответствующим предполагаемому выравниванию. Затем применим к ним выравнивание по горизонтали, а в ячейках ниже выведем соответствующие значения констант.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Sub Primer1() ‘Заполняем ячейки текстом Range(“A1”) = “Левая сторона” Range(“B1”) = “Центр ячейки” Range(“C1”) = “Правая сторона” ‘Применяем горизонтальное выравнивание Range(“A1”).HorizontalAlignment = xlLeft Range(“B1”).HorizontalAlignment = xlCenter Range(“C1”).HorizontalAlignment = xlRight ‘Выводим значения констант Range(“A2”) = “xlLeft = “ & xlLeft Range(“B2”) = “xlCenter = “ & xlCenter Range(“C2”) = “xlRight = “ & xlRight End Sub |
Основные свойства объекта 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 – это не единственное свойство, отвечающее за цвет отображаемого текста в ячейке. Оно также может принимать и другие значения, кроме указанных в таблице. Смотрите подробности в статье Цвет текста (шрифта) в ячейке.
Синтаксис и параметры
Format(Expression, [FormatExpression], [FirstDayOfWeek], [FirstWeekOfYear])
- Expression – любое допустимое выражение (переменная), возвращающее числовое значение или строку (обязательный параметр).
- FormatExpression – выражение формата, именованное или содержащее инструкции из специальных символов (необязательный параметр).
- FirstDayOfWeek – константа, задающая первый день недели (необязательный параметр).
- FirstWeekOfYear – константа, задающая первую неделю года (необязательный параметр).
Именные форматы даты и времени
Имя формата | Описание |
---|---|
General Date | Стандартное отображение даты и времени в соответствии с параметрами системы. |
Long Date | Длинный формат даты. |
Medium Date | Средний формат даты. |
Short Date | Краткий формат даты. |
Long Time | Длинный формат времени. |
Medium Time | Средний формат времени. |
Short Time | Краткий формат времени. |
Проверьте отображение даты и времени с использованием именованных форматов на вашем компьютере при помощи следующего кода VBA Excel:
Sub FormatDateTime() MsgBox “General Date: “ & Format(Now, “General Date”) & vbNewLine _ & vbNewLine & “Long Date: “ & Format(Now, “Long Date”) & vbNewLine _ & vbNewLine & “Medium Date: “ & Format(Now, “Medium Date”) & vbNewLine _ & vbNewLine & “Short Date: “ & Format(Now, “Short Date”) & vbNewLine _ & vbNewLine & “Long Time: “ & Format(Now, “Long Time”) & vbNewLine _ & vbNewLine & “Medium Time: “ & Format(Now, “Medium Time”) & vbNewLine _ & vbNewLine & “Short Time: “ & Format(Now, “Short Time”) End Sub |
Скорее всего, результат будет таким:
Именованные форматы чисел
Имя формата | Описание |
---|---|
General Number | Стандартное отображение числа без знака разделителя групп разрядов. |
Currency | Денежный формат. |
Fixed | Отображение числа без знака разделителя групп разрядов с двумя цифрами после разделителя целой и дробной части. |
Standard | Отображение числа со знаком разделителя групп разрядов и с двумя цифрами после разделителя целой и дробной части. |
Percent | Процентный формат: отображение числа, умноженного на 100, со знаком процента (%), добавленного справа. |
Scientific | Отображение числа в экспоненциальном виде. |
Yes/No | Возвращается «Нет», если число равно 0, иначе отображается «Да». |
True/False | Возвращается «Ложь», если число равно 0, иначе отображается «Истина». |
On/Off | Возвращается «Выкл», если число равно 0, иначе отображается «Вкл». |
Проверяем работу именованных форматов на числах 2641387.7381962 и 0 с помощью кода VBA Excel:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub FormatNumber() Dim n As Double n = 2641387.7381962 ‘n = 0 MsgBox “Форматируемое число = “ & n & vbNewLine _ & vbNewLine & “General Number: “ & Format(n, “General Number”) & vbNewLine _ & vbNewLine & “Currency: “ & Format(n, “Currency”) & vbNewLine _ & vbNewLine & “Fixed: “ & Format(n, “Fixed”) & vbNewLine _ & vbNewLine & “Standard: “ & Format(n, “Standard”) & vbNewLine _ & vbNewLine & “Percent: “ & Format(n, “Percent”) & vbNewLine _ & vbNewLine & “Scientific: “ & Format(n, “Scientific”) & vbNewLine _ & vbNewLine & “Yes/No: “ & Format(n, “Yes/No”) & vbNewLine _ & vbNewLine & “True/False: “ & Format(n, “True/False”) & vbNewLine _ & vbNewLine & “On/Off: “ & Format(n, “On/Off”) End Sub |
Получаем следующий результат:
Вместо вопросительного знака в отображении числа в формате Currency, по идее, должен быть знак валюты (₽ или руб.).
Символы для форматов даты и времени
Символ | Описание |
---|---|
Точка (.) | Разделитель компонентов даты (день, месяц, год). Используется при отображении месяца в виде числа. |
Пробел | Разделитель компонентов даты (день, месяц, год). Используется при отображении месяца прописью. |
Двоеточие (:) | Разделитель компонентов времени (часы, минуты, секунды). |
d | День в виде числа без нуля в начале (1–31). |
dd | День в виде числа с нулем в начале (01–31). |
m | Месяц в виде числа без нуля в начале (1–31). Если (m) следует после (h) или (hh), отображаются минуты. |
mm | Месяц в виде числа с нулем в начале (01–31). Если (mm) следует после (h) или (hh), отображаются минуты. |
mmm | Месяц прописью в сокращенном виде (янв–дек). |
mmmm | Полное название месяца (январь–декабрь). |
y | День года в виде числа (1–366). |
yy | Год в виде 2-значного числа (00–99). |
yyyy | Год в виде 4-значного числа (1900–9999). |
h | Часы в виде числа без нуля в начале (0–23). |
hh | Часы в виде числа с нулем в начале (00–23). |
n (m) | Минуты в виде числа без нуля в начале (0–59). |
nn (mm) | Минуты в виде числа с нулем в начале (00–59). |
s | Секунды в виде числа без нуля в начале (0–59). |
ss | Секунды в виде числа с нулем в начале (00–59). |
Примеры отображения даты с помощью разных по количеству наборов символа d:
Sub DataIsD() MsgBox “d: “ & Format(Now, “d”) & vbNewLine _ & vbNewLine & “dd: “ & Format(Now, “dd”) & vbNewLine _ & vbNewLine & “ddd: “ & Format(Now, “ddd”) & vbNewLine _ & vbNewLine & “dddd: “ & Format(Now, “dddd”) & vbNewLine _ & vbNewLine & “ddddd: “ & Format(Now, “ddddd”) & vbNewLine _ & vbNewLine & “dddddd: “ & Format(Now, “dddddd”) End Sub |
Заливка ячейки цветом в VBA Excel
Пример кода 1:
Sub ColorTest1() Range(“A1”).Interior.Color = 31569 Range(“A4:D8”).Interior.Color = 4569325 Range(“C12:D17”).Cells(4).Interior.Color = 568569 Cells(3, 6).Interior.Color = 12659 End Sub |
Поместите пример кода в свой программный модуль и нажмите кнопку на панели инструментов «Run Sub» или на клавиатуре «F5», курсор должен быть внутри выполняемой программы. На активном листе Excel ячейки и диапазон, выбранные в коде, окрасятся в соответствующие цвета.
Есть один интересный нюанс: если присвоить свойству .Interior.Color отрицательное значение от -16777215 до -1, то цвет будет соответствовать значению, равному сумме максимального значения палитры (16777215) и присвоенного отрицательного значения. Например, заливка всех трех ячеек после выполнения следующего кода будет одинакова:
Sub ColorTest11() Cells(1, 1).Interior.Color = –12207890 Cells(2, 1).Interior.Color = 16777215 + (–12207890) Cells(3, 1).Interior.Color = 4569325 End Sub |
Проверено в Excel 2016.
Создание новых стилей
Если встроенных стилей Excel не достаточно, то можно создать собственные стили. Это достаточно просто сделать:
- Выберите любую ячейку и отформатируйте ее обычным способом так как вам нравится. Форматирование этой ячейки в дальнейшим мы сохраним как именованный стиль. Вы можете использовать любое доступное форматирование из диалогового окна Форматирование ячеек.
- Перейдите на вкладку Главная -> Стили ячеек и выберите команду Создать стиль ячейки. Откроется диалоговое окно Стиль.
- Выберите Имя стиля, которое будет в дальнейшем будете использовать.
- Выберите опции, которые будут применяться к выбранному стилю (по умолчанию отмечены все опции). Если нет необходимости в какой то опции, например вы не хотите изменять шрифт ячейки – то снимите выбор.
- Нажмите кнопку OK.
В результате в активную книгу будет добавлен новый пользовательский стиль, который будет доступен в меню Стили ячеек.
Выравнивание по вертикали
Для выравнивания текста в ячейках рабочего листа по вертикали в VBA Excel используется свойство VerticalAlignment объекта Range. Оно может принимать следующие значения:
Выравнивание | Константа | Значение |
По верхнему краю | xlTop | -4160 |
По центру | xlCenter | -4108 |
По нижнему краю | xlBottom | -4107 |
Точно так же, как и по горизонтали, при выравнивании по вертикали свойству VerticalAlignment можно присваивать как значение из константы, так и непосредственно ее числовое значение.
Пример 2
Заполним три первые ячейки третьей строки листа Excel текстом, соответствующим предполагаемому выравниванию. Затем применим к ним выравнивание по вертикали, а в ячейках ниже выведем соответствующие значения констант.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Sub Primer2() ‘Заполняем ячейки текстом Range(“A3”) = “Верх” Range(“B3”) = “Центр” Range(“C3”) = “Низ” ‘Применяем вертикальное выравнивание Range(“A3”).VerticalAlignment = xlTop Range(“B3”).VerticalAlignment = xlCenter Range(“C3”).VerticalAlignment = xlBottom ‘Выводим значения констант Range(“A4”) = “xlTop = “ & xlTop Range(“B4”) = “xlCenter = “ & xlCenter Range(“C4”) = “xlBottom = “ & xlBottom End Sub |
Зачем нужны именованные стили
Идея именованных стилей заключается в следующем:
- Можно создать собственный набор стилей для форматирования, например, заголовков, итогов, обычного текста. А после применять готовые стили на другие ячейки не тратя время на воспроизведение точно такого же формата.
- Если изменить формат стиля, то все ячейки, к котором применен данный стиль будут автоматически отформатированы. Таким образом, можно быстро пересматривать любой формат и не тратить время на форматирование ячеек по отдельности.
Стили Excel позволяют отформатировать следующие атрибуты:
- числовой формат (например, число, короткий формат даты, формат телефонного номера и т.п.);
- выравнивание (по вертикали и горизонтали);
- шрифт (название, размер, цвет и пр.);
- граница (тип линии, цвет границы);
- заливка (цвет фона, узор);
- защита (защищаемая ячейка, скрытие формул).
Описание VBA-макроса для формата ячеек таблицы Excel
Первая инструкция в коде, проверяет выделены ли ячейки диапазоном. Если перед выполнением макроса выделил другой элемент листа, например, график, тогда макрос закрывается и дальнейшие инструкции выполняться не будут. В противные случаи будут форматироваться все выделенные ячейки по очереди в соответствии с определенными настройками форматирования:
- Текст в значениях ячеек выравнивается по центру горизонтально и вертикально.
- Включен построчный перенос текста.
- Все границы ячеек получают черную обычной толщины непрерывную линию с черным цветом.
- Сброс цвета шрифта на авто.
- Удаляется любая заливка ячеек.
- Ширина столбцов автоматически настраивается под текст в ячейках.
- Автоматически настроить высоту строк по содержимому ячеек.
Использование предопределенных констант
В VBA Excel есть предопределенные константы часто используемых цветов для заливки ячеек:
Предопределенная константа | Наименование цвета |
vbBlack | Черный |
vbBlue | Голубой |
vbCyan | Бирюзовый |
vbGreen | Зеленый |
vbMagenta | Пурпурный |
vbRed | Красный |
vbWhite | Белый |
vbYellow | Желтый |
xlNone | Нет заливки |
Присваивается цвет ячейке предопределенной константой в VBA Excel точно так же, как и числовым значением:
Пример кода 3:
Range(“A1”).Interior.Color = vbGreen |
Изменение существующих стилей
Вы можете изменить форматирование существующего стиля. При этом все ячейки, к которым применен данный стиль также изменят форматирование. Чтобы изменить стиль необходимо:
- Перейти на вкладку Главная -> Стили ячеек.
- Щелкнуть правой кнопкой мыши по стилю, который хотите изменить и выбрать команду Изменить.
- Откроется диалоговое окно Стиль, в котором указано применяемое к ячейке форматирование.
- Нажмите на кнопку Формат, и в появившемся диалоговом окне Формат ячеек задайте необходимое форматирование. Например, чтобы изменить размер шрифта перейдите на вкладку Шрифт, задайте нужный размер и нажмите кнопку ОК.
- Нажмите еще раз кнопку ОК, чтобы закрыть окно Стиль и применить форматирование к изменяемому стилю.
Источники
- https://vremya-ne-zhdet.ru/vba-excel/formatirovaniye-teksta-v-yacheyke/
- https://micro-solution.ru/excel/formatting/formatting-styles
- https://exceltable.com/vba-macros/makrosy-dlya-formatirovaniya-yacheek
- https://vremya-ne-zhdet.ru/vba-excel/tsvet-yacheyki-zalivka-fon/
- https://vremya-ne-zhdet.ru/vba-excel/vyravnivaniye-teksta-v-yacheyke/
- https://vremya-ne-zhdet.ru/vba-excel/funktsiya-format/
The best way to draw a user’s attention to a cell or some text within a cell is to make it look different from the rest of the text.
One way to do this is to make the text bold, thereby highlighting it or stressing its importance.
The ‘Bold’ button in the Excel Home tab is of course everyone’s go-to way of making any text bold. A lot of people also like to use the keyboard shortcut CTRL+B.
However, you might need to make some text bold based on a certain condition, or only at the end of a calculation.
Unfortunately, there’s no Excel function that you can use to make text bold. But it is possible to do this using VBA.
In this tutorial, we will show you how to make text bold using VBA in a number of different use cases.
To make any text bold in VBA, we can use the Font.Bold property of a Range or Cell.
Let’s say you want to bold the text that is in cell A2 of your spreadsheet.
Here’s the code you can use to get this done:
Cells(1,2).Font.Bold=True
You can also use the Range function to accomplish the same:
Range("A2").Font.Bold = True
This will also work if you want to bold a whole range of cells, for example:
Range("A2:A8").Font.Bold = True
This will change cells in the range A1:A8 to bold.
Using the Visual Basic Immediate Window to Bold Text in Excel
You can use the Visual Basic developer’s Immediate Window to quickly run one-line VBA codes, such as the ones we discussed in the previous section.
To run the code in the Immediate Window, simply follow the steps shown below:
- From the Developer Menu Ribbon, select Visual Basic.
- Once your VBA window opens, your Immediate Window should be at the bottom. If you cannot see it, then Click View>Immediate Window or press CTRL+G on the keyboard.
- Paste your line of code in the Immediate Window and press the Return key.
When you get back to your Excel window, you should see the result of the executed code.
So if you used the line:
Range("A2:A8").Font.Bold = True
You should see all the cells in the range A2:A8 have the text converted to bold:
Writing a Visual Basic Module to Bold Text in Excel
If you prefer writing a VBA Module to bold the text instead, then you can enclose the same line of code within a Sub procedure as shown below:
Sub ConvertToBold()
Range("A1:A8").Font.Bold = True
End Sub
Here’s what you have to do in order to use the above procedure:
- From the Developer Menu Ribbon, select Visual Basic.
- Once your VBA window opens, Click Insert->Module and paste the above code in the Module window.
- To run the macro, go back to your Excel window and navigate to Developer->Macros.
- Select the name of the module, which is ConvertToBold in our example.
- Click Run.
You should find the cells in the range A2:A8 have the text converted to bold.
Some Practical Use-cases of the Font.Bold Property
Let us see some practical applications of the Font.Bold property.
How to Bold Selected Cells in Excel Using VBA
Let’s see a small module that can help you bold only the cells that you selected:
'Code by Steve from SpreadsheetPlanet.com Sub ConvertSelectedCellsToBold() Dim Rng As Range Dim myCell As Object Set Rng = Selection For Each myCell In Rng myCell.Font.Bold = True Next End Sub
To run the code do the following:
- Select the cells that you want to bold.
- Copy the above code to your Visual Basic module window.
- Run the macro.
- You should find the contents of all your selected cells converted to bold.
Explanation of the Code
In this code, we stored the selected range of cells in the variable Rng.
Then we used a for-loop to traverse over each cell (myCell) in the range, making the contents of each selected cell bold, using the line:
myCell.Font.Bold = True
How to Bold Cells Containing a Specific Text using VBA
Now consider a scenario where you need to highlight all the cells that contain a specific text using VBA.
This can be achieved by the following code:
'Code by Steve from SpreadsheetPlanet.com Sub ConvertCellsWithSpecificTextToBold() Dim Rng As Range Dim myCell As Object Dim myUnion As Range Set Rng = Selection searchString = InputBox("Please Enter the Search String") For Each myCell In Rng If InStr(myCell.Text, searchString) Then myCell.Font.Bold = True End If Next End Sub
To run the code do the following:
- Select the range of cells that you want to work with.
- Copy the above code to your Visual Basic module window.
- Run the macro.
- You will see a message window that asks you to enter your search string. Type your search string in the input box. In our example, we entered the word “King”.
- When you press the Return key, you should find all the cells that contain the word “King” highlighted in bold.
Explanation of the Code
In this code, we again stored the selected range of cells in the variable Rng. We used an InputBox to get the user’s search string input and we stored this text in the variable searchString.
We then used a for-loop to traverse over each cell (myCell) in the range and we checked if the cell contained the search string (using the InStr function). If it did, then we made the contents of the cell bold.
How to Find and Bold Specific Text in a Cell using VBA
Now, what if you only want to make the particular search string bold, instead of the entire cell?
For example, you might have a lot of data in your worksheet and you might want to bold only a particular word so that it stands out.
This can be achieved using the following module code:
'Code by Steve from SpreadsheetPlanet.com Sub ConvertSpecificTextToBold() Dim Rng As Range Dim myCell As Object Dim myUnion As Range Set Rng = Selection searchString = InputBox("Please Enter the Search String") For Each myCell In Rng If InStr(myCell.Text, searchString) Then myCell.Characters(WorksheetFunction.Find(searchString, myCell.Value), Len(searchString)).Font.Bold = True End If Next End Sub
To run the code do the following:
- Select the range of cells that you want to work with.
- Copy the above code to your Visual Basic module window.
- Run the macro.
- You will see a message window that asks you to enter your search string. Type your search string in the input box. In our example, we entered the word “King”.
- When you press the Return key, you should find only the word “King” highlighted in all your selected cells.
Explanation of the Code
In this code, we stored the selected range of cells in the variable Rng. We used an InputBox to get the user’s search string input and we stored this text in the variable searchString.
We then used a for-loop to traverse over each cell (myCell) in the range and we checked if the cell contained the search string.
If it did, then we used the WorksheetFunction.Find function to find the starting and ending position of the search string in the cell’s contents.
The WorksheetFunction object is used as a container for Excel worksheet functions that can be used in VBA.
So you can use the functions under this object the same way you would use regular functions in Excel. That means, the WorksheetFunction.Find function works the same way as Excel’s FIND function.
The Find function lets you find a search string in another given string and returns the position of the string in the cell’s contents. We used the function as follows:
WorksheetFunction.Find(searchString, myCell.Value)
This means “return the position of searchString in myCell.Value”. This gives the starting position of our search string. To get the ending position of the string we used the length of the search string itself (Len(searchString)).
We then used this information (starting and ending position of the search string) inside the Characters object.
The Characters object represents a range of characters within the cell (myCell). You can use this Characters object to format specific characters within the cell.
So you can set the Font.Bold property of the characters in your search string using the line:
myCell.Characters(WorksheetFunction.Find(searchString, myCell.Value), Len(searchString)).Font.Bold = True
Note: Once you change the font using VBA, you cannot undo the changes using the Undo button.
How to Remove the Bold.Font Setting in VBA
If you want to change the text font back by removing the bold setting, then all you need to do is set the Font.Bold property of the object to False.
In this tutorial, we saw how to bold text using VBA.
We showed you the basic syntax and then showed a few practical use cases where you might need to bold certain text in Excel using VBA.
We hope this was helpful and easy to follow.
Other Excel tutorials you may also like:
- How to Copy Formatting In Excel (4 Easy Ways)
- How to Flash an Excel Cell (Easy Step-by-Step Method)
- How to Auto Format Formulas in Excel (3 Easy Ways)
- How to Reverse a Text String in Excel (Using Formula & VBA)
- Highlight Cell If Value Exists in Another Column in Excel
- How to Set the Default Font in Excel (Windows and Mac)
- How to Add Bullet Points in Excel
- How to Rotate Text in Excel?
Formatting Cells Number
General
Range("A1").NumberFormat = "General"
Number
Range("A1").NumberFormat = "0.00"
Currency
Range("A1").NumberFormat = "$#,##0.00"
Accounting
Range("A1").NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
Date
Range("A1").NumberFormat = "yyyy-mm-dd;@"
Time
Range("A1").NumberFormat = "h:mm:ss AM/PM;@"
Percentage
Range("A1").NumberFormat = "0.00%"
Fraction
Range("A1").NumberFormat = "# ?/?"
Scientific
Range("A1").NumberFormat = "0.00E+00"
Text
Range("A1").NumberFormat = "@"
Special
Range("A1").NumberFormat = "00000"
Custom
Range("A1").NumberFormat = "$#,##0.00_);[Red]($#,##0.00)"
Formatting Cells Alignment
Text Alignment
Horizontal
The value of this property can be set to one of the constants: xlGeneral, xlCenter, xlDistributed, xlJustify, xlLeft, xlRight.
The following code sets the horizontal alignment of cell A1 to center.
Range("A1").HorizontalAlignment = xlCenter
Vertical
The value of this property can be set to one of the constants: xlBottom, xlCenter, xlDistributed, xlJustify, xlTop.
The following code sets the vertical alignment of cell A1 to bottom.
Range("A1").VerticalAlignment = xlBottom
Text Control
Wrap Text
This example formats cell A1 so that the text wraps within the cell.
Range("A1").WrapText = True
Shrink To Fit
This example causes text in row one to automatically shrink to fit in the available column width.
Rows(1).ShrinkToFit = True
Merge Cells
This example merge range A1:A4 to a large one.
Range("A1:A4").MergeCells = True
Right-to-left
Text direction
The value of this property can be set to one of the constants: xlRTL (right-to-left), xlLTR (left-to-right), or xlContext (context).
The following code example sets the reading order of cell A1 to xlRTL (right-to-left).
Range("A1").ReadingOrder = xlRTL
Orientation
The value of this property can be set to an integer value from –90 to 90 degrees or to one of the following constants: xlDownward, xlHorizontal, xlUpward, xlVertical.
The following code example sets the orientation of cell A1 to xlHorizontal.
Range("A1").Orientation = xlHorizontal
Font
Font Name
The value of this property can be set to one of the fonts: Calibri, Times new Roman, Arial…
The following code sets the font name of range A1:A5 to Calibri.
Range("A1:A5").Font.Name = "Calibri"
Font Style
The value of this property can be set to one of the constants: Regular, Bold, Italic, Bold Italic.
The following code sets the font style of range A1:A5 to Italic.
Range("A1:A5").Font.FontStyle = "Italic"
Font Size
The value of this property can be set to an integer value from 1 to 409.
The following code sets the font size of cell A1 to 14.
Range("A1").Font.Size = 14
Underline
The value of this property can be set to one of the constants: xlUnderlineStyleNone, xlUnderlineStyleSingle, xlUnderlineStyleDouble, xlUnderlineStyleSingleAccounting, xlUnderlineStyleDoubleAccounting.
The following code sets the font of cell A1 to xlUnderlineStyleDouble (double underline).
Range("A1").Font.Underline = xlUnderlineStyleDouble
Font Color
The value of this property can be set to one of the standard colors: vbBlack, vbRed, vbGreen, vbYellow, vbBlue, vbMagenta, vbCyan, vbWhite or an integer value from 0 to 16,581,375.
To assist you with specifying the color of anything, the VBA is equipped with a function named RGB. Its syntax is:
Function RGB(RedValue As Byte, GreenValue As Byte, BlueValue As Byte) As long
This function takes three arguments and each must hold a value between 0 and 255. The first argument represents the ratio of red of the color. The second argument represents the green ratio of the color. The last argument represents the blue of the color. After the function has been called, it produces a number whose maximum value can be 255 * 255 * 255 = 16,581,375, which represents a color.
The following code sets the font color of cell A1 to vbBlack (Black).
Range("A1").Font.Color = vbBlack
The following code sets the font color of cell A1 to 0 (Black).
Range("A1").Font.Color = 0
The following code sets the font color of cell A1 to RGB(0, 0, 0) (Black).
Range("A1").Font.Color = RGB(0, 0, 0)
Font Effects
Strikethrough
True if the font is struck through with a horizontal line.
The following code sets the font of cell A1 to strikethrough.
Range("A1").Font.Strikethrough = True
Subscript
True if the font is formatted as subscript. False by default.
The following code sets the font of cell A1 to Subscript.
Range("A1").Font.Subscript = True
Superscript
True if the font is formatted as superscript; False by default.
The following code sets the font of cell A1 to Superscript.
Range("A1").Font.Superscript = True
Border
Border Index
Using VBA you can choose to create borders for the different edges of a range of cells:
- xlDiagonalDown (Border running from the upper left-hand corner to the lower right of each cell in the range).
- xlDiagonalUp (Border running from the lower left-hand corner to the upper right of each cell in the range).
- xlEdgeBottom (Border at the bottom of the range).
- xlEdgeLeft (Border at the left-hand edge of the range).
- xlEdgeRight (Border at the right-hand edge of the range).
- xlEdgeTop (Border at the top of the range).
- xlInsideHorizontal (Horizontal borders for all cells in the range except borders on the outside of the range).
- xlInsideVertical (Vertical borders for all the cells in the range except borders on the outside of the range).
Line Style
The value of this property can be set to one of the constants: xlContinuous (Continuous line), xlDash (Dashed line), xlDashDot (Alternating dashes and dots), xlDashDotDot (Dash followed by two dots), xlDot (Dotted line), xlDouble (Double line), xlLineStyleNone (No line), xlSlantDashDot (Slanted dashes).
The following code example sets the border on the bottom edge of cell A1 with continuous line.
Range("A1").Borders(xlEdgeBottom).LineStyle = xlContinuous
The following code example removes the border on the bottom edge of cell A1.
Range("A1").Borders(xlEdgeBottom).LineStyle = xlNone
Line Thickness
The value of this property can be set to one of the constants: xlHairline (Hairline, thinnest border), xlMedium (Medium), xlThick (Thick, widest border), xlThin (Thin).
The following code example sets the thickness of the border created to xlThin (Thin).
Range("A1").Borders(xlEdgeBottom).Weight = xlThin
Line Color
The value of this property can be set to one of the standard colors: vbBlack, vbRed, vbGreen, vbYellow, vbBlue, vbMagenta, vbCyan, vbWhite or an integer value from 0 to 16,581,375.
The following code example sets the color of the border on the bottom edge to green.
Range("A1").Borders(xlEdgeBottom).Color = vbGreen
You can also use the RGB function to create a color value.
The following example sets the color of the bottom border of cell A1 with RGB fuction.
Range("A1").Borders(xlEdgeBottom).Color = RGB(255, 0, 0)
Fill
Pattern Style
The value of this property can be set to one of the constants:
- xlPatternAutomatic (Excel controls the pattern.)
- xlPatternChecker (Checkerboard.)
- xlPatternCrissCross (Criss-cross lines.)
- xlPatternDown (Dark diagonal lines running from the upper left to the lower right.)
- xlPatternGray16 (16% gray.)
- xlPatternGray25 (25% gray.)
- xlPatternGray50 (50% gray.)
- xlPatternGray75 (75% gray.)
- xlPatternGray8 (8% gray.)
- xlPatternGrid (Grid.)
- xlPatternHorizontal (Dark horizontal lines.)
- xlPatternLightDown (Light diagonal lines running from the upper left to the lower right.)
- xlPatternLightHorizontal (Light horizontal lines.)
- xlPatternLightUp (Light diagonal lines running from the lower left to the upper right.)
- xlPatternLightVertical (Light vertical bars.)
- xlPatternNone (No pattern.)
- xlPatternSemiGray75 (75% dark moiré.)
- xlPatternSolid (Solid color.)
- xlPatternUp (Dark diagonal lines running from the lower left to the upper right.)
Protection
Locking Cells
This property returns True if the object is locked, False if the object can be modified when the sheet is protected, or Null if the specified range contains both locked and unlocked cells.
The following code example unlocks cells A1:B22 on Sheet1 so that they can be modified when the sheet is protected.
Worksheets("Sheet1").Range("A1:B22").Locked = False
Worksheets("Sheet1").Protect
Hiding Formulas
This property returns True if the formula will be hidden when the worksheet is protected, Null if the specified range contains some cells with FormulaHidden equal to True and some cells with FormulaHidden equal to False.
Don’t confuse this property with the Hidden property. The formula will not be hidden if the workbook is protected and the worksheet is not, but only if the worksheet is protected.
The following code example hides the formulas in cells A1 and C1 on Sheet1 when the worksheet is protected.
Worksheets("Sheet1").Range("A1:C1").FormulaHidden = True