Форматирование текста в ячейке при помощи кода 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 |
Oleksandr Пользователь Сообщений: 14 |
Есть много ячеек, в каждой ячейке текст (две строчки), например Текст 1 параметры шрифта для обоих текстов (Calibri, размер 11) нужно написать макрос который будет менять параметры шрифта в выбранных ячейках Хотелось бы чтобы макрос работал для всех выделенных ячеек… Изменено: Oleksandr — 07.09.2017 10:46:53 |
V Пользователь Сообщений: 5018 |
файл покажите. или какой разделитель между текст1 и текст2. символ10 или просто через формат ячейки «перенос по словам»? |
Oleksandr Пользователь Сообщений: 14 |
разделитель между текстами СИМВОЛ (10)… |
V Пользователь Сообщений: 5018 |
а теперь согласно файла в каком столбце это все должно происходить. |
Oleksandr Пользователь Сообщений: 14 |
исходные данные в столбце E… можно редактировать прямо там (но там внутри формула)… Спасибо Изменено: Oleksandr — 07.09.2017 17:27:44 |
Alemox Пользователь Сообщений: 2183 |
#6 07.09.2017 10:59:11
Но данное изменение не применимо для формул Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. |
||
Alemox Пользователь Сообщений: 2183 |
файл с примером Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. |
Oleksandr Пользователь Сообщений: 14 |
#8 07.09.2017 11:08:25
тогда я скопирую (как значения) данные из ячеек с формулами в соседний столбец и к нему применю Ваш макрос… Спасибо!!! |
||
V Пользователь Сообщений: 5018 |
#9 07.09.2017 11:25:49 еще вариант (копирует выделенное в соседний столбец справа и там обрабатывает)
Изменено: V — 07.09.2017 11:28:11 |
||
Oleksandr Пользователь Сообщений: 14 |
#10 07.09.2017 11:29:45
о этот макрос сам и копирует отредактированные данные в соседний столбец… |
||
kuklp Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
#11 07.09.2017 11:42:56 На месте, без вн. цикла:
Я сам — дурнее всякого примера! … |
||
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
Содержание
- Шрифт ячейки VBA — изменение цвета, размера, стиля и т. Д.
- Шрифт ячейки VBA
- Изменить цвет шрифта
- vbColor
- Цвет — RGB
- ColorIndex
- Размер шрифта
- Жирный шрифт
- Название шрифта
- Стиль ячейки
- Макросы для изменения формата ячеек в таблице Excel
- VBA-макрос: заливка, шрифт, линии границ, ширина столбцов и высота строк
- Описание VBA-макроса для формата ячеек таблицы Excel
- Модификация исходного кода макроса для форматирования
- VBA Excel. Форматирование текста в ячейке (объект Font)
- Формат отображаемого значения
- Основные свойства объекта Font
- Примеры форматирования текста
- 5 комментариев для “VBA Excel. Форматирование текста в ячейке (объект Font)”
Шрифт ячейки VBA — изменение цвета, размера, стиля и т. Д.
Шрифт ячейки VBA
В 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 |
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»:
Источник
Макросы для изменения формата ячеек в таблице Excel
В данном примере описаны макросы для автоматического форматирования или спроса формата для ячеек таблиц Excel средствами VBA.
VBA-макрос: заливка, шрифт, линии границ, ширина столбцов и высота строк
В процессе запыления данных сотрудниками отдела на некоторых листах были изменены форматы ячеек:
Необходимо сбросить форматирование ячеек и сделать так чтобы на всех таблицах планов выполнения работ были одинаковые форматы отображения данных. Формат ячеек для исходной таблицы должен быть закреплен за шаблоном, чтобы можно было сделать сброс и применять заданный стиль оформления в дальнейшем.
Чтобы выполнять такие задачи вручную можно попытаться облегчить процесс настройки множества опций форматирования для многих диапазонов ячеек на разных листах и рабочих книгах. Плюс к о всему можно ошибиться и применить несколько другие настройки форматирования.
Макросы Excel прекрасно справляются с форматированием ячеек на рабочих листах. Кроме того, делают это быстро и в полностью автоматическом режиме. Воспользуемся этими преимуществами и для решения данной задачи напишем свой код VBA-макроса. Он поможет нам быстро и безопасно сбрасывать форматы на исходный предварительно заданный в шаблоне главной таблицы.
Чтобы написать свой код макроса откройте специальный VBA-редактор в Excel: «РАЗРАБОТЧИК»-«Код»-«Visual Basic» или нажмите комбинацию клавиш ALT+F11:
В редакторе создайте новый модуль выбрав инструмент «Insert»-«Module» и введите в него такой VBA-код макроса:
Sub SbrosFormat()
If TypeName(Selection) <> «Range» Then Exit Sub
With Selection
.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
Первая инструкция в коде, проверяет выделены ли ячейки диапазоном. Если перед выполнением макроса выделил другой элемент листа, например, график, тогда макрос закрывается и дальнейшие инструкции выполняться не будут. В противные случаи будут форматироваться все выделенные ячейки по очереди в соответствии с определенными настройками форматирования:
- Текст в значениях ячеек выравнивается по центру горизонтально и вертикально.
- Включен построчный перенос текста.
- Все границы ячеек получают черную обычной толщины непрерывную линию с черным цветом.
- Сброс цвета шрифта на авто.
- Удаляется любая заливка ячеек.
- Ширина столбцов автоматически настраивается под текст в ячейках.
- Автоматически настроить высоту строк по содержимому ячеек.
Модификация исходного кода макроса для форматирования
Если необходимо сделать так чтобы текст выравнивался не по центру относительно горизонтали, а по правую сторону ячейки, тогда измените константу xlHAlignCenter на xlHAlignRight. Она находиться в свойстве .HorizontalAlignment. Сделайте это следующим образом:
Таким же образом можно выровнять текст по левую сторону изменив значение константы на xlHAlignLeft. Или можно выровнять положение текста по ширине ячейки используя константу xlHAlignJustify.
Чтобы макрос выравнивал текст в ячейках по вертикали к низу, измените строку кода, отвечающую за данную настройку форматирования. Измените константу, которая присваивается к свойству VerticalAlignment в следующий способ:
Если хотите выровнять текс к верху ячейки, тогда воспользуйтесь константой xlHAlignTop.
Если нужно применить для границ ячеек толстую и пунктирную линию в синем цвете, смодифицируйте инструкцию, отвечающую за формат линий:
Описание настройки форматирования для линий границ ячеек. Мы будем получать разные дополнительные типы линий границ если для свойства LineStyle присваивать такие константы:
- xlDoshDot – применяется для рисования пунктирных линий в границах ячеек;
- xlDouble – рисует двойную линию;
- xlHairLine – рисует тонкую линию;
- xlThick – для рисования очень толстой линии.
Для настройки цвета линий Excel предлагает всего 8 констант для определенных цветов. Константы для настройки цвета линий границ для свойства Color:
- vbBlack – черный;
- vbWhite – белый;
- vbRed – красный;
- vbGreen –зеленый;
- vbBlue – синий;
- vbYellow – желтый;
- vbMagenta – алый;
- vbCyan – голубой.
Но при необходимости присвоить линиям границ другие цвета можно вместо константы для свойства Color записать функцию RGB(). Достаточно лишь в аргументе этой функции указать код цвета по шкале от 0 и до 255.
Если нужно применить толстую линию только для границ выделенного диапазона, тогда перед инструкцией End With добавьте следующую строку кода:
.BorderAround xlContinuous, xlMedium, vbBlack
Описание: В первом аргументе для метода BorderAround можно записать также другой стиль линии. Во втором – толщину линии, а в третьем – цвет. Константы, которые можно присвоить в качестве значений для этих аргументов можно использовать те же, которые мы использовали для свойств: LineStyle, Weight, Color.
Если нужно экспонировать первую строку для выделенного диапазона с помощью жирного и курсивного шрифта значений ячеек. А также заполнить ячейки первой строки заливкой с голубым цветом, тогда в самом конце кода макроса перед последней инструкцией End Sub следует добавить несколько строк с VBA-кодом:
Если хотите присвоить такой же формат для не только для первой строки, но и для первого столбца выделенного диапазона, тогда скопируйте и вставьте ниже эти 3 строчки кода. После в последних трех строках измените свойство Rows на Columns.
.Columns (1).Font.Bold = True
.Columns (1).Font.Italic = True
.Columns (1).Interior.Color = vbCyan
Если нужно задать особенный формат для экспонирования последней строки выделенного диапазона, тогда измените число 1 в аргументе свойства Rows на число всех выделенных строк .Rows.Count. Например, добавьте в конец кода еще такую строку:
Полная версия модифицированного кода макроса выглядит так:
Sub SbrosFormat()
If TypeName(Selection) <> «Range» Then Exit Sub
With Selection
.HorizontalAlignment = xlVAlignCenter
.VerticalAlignment = xlVAlignCenter
.WrapText = True
.Borders.LineStyle = xlDash
.Borders.Color = vbBlue
.Borders.Weight = xlMedium
.Font.ColorIndex = xlColorIndexAutomatic
.Interior.ColorIndex = xlColorIndexAutomatic
.Columns.AutoFit
.Rows.AutoFit
.BorderAround xlContinuous, xlMedium, vbBlack
.Rows(1).Font.Bold = True
.Rows(1).Font.Italic = True
.Rows(1).Interior.Color = vbCyan
.Columns(1).Font.Bold = True
.Columns(1).Font.Italic = True
.Columns(1).Interior.Color = vbCyan
.Rows(.Rows.Count).Font.Bold = True
End With
End Sub
Пример работы измененного кода VBA-макроса:
В данном примере вы ознакомились с базовыми возможностями форматирования с помощью VBA-макросов. Уверен, что теперь вы сможете самостоятельно найти практическое применение этим исходным кодам.
Источник
VBA Excel. Форматирование текста в ячейке (объект Font)
Форматирование текста в ячейке при помощи кода 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» присвоим шрифты разных наименований:
Пример 2
В этом примере рассмотрим применение одного свойства объекта Font к одной ячейке:
Пример 3
Форматирование диапазона из нескольких ячеек:
Пример 4
Пример форматирования шрифта в разных ячейках по одному свойству:
5 комментариев для “VBA Excel. Форматирование текста в ячейке (объект Font)”
Пример 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 список объектов и слева от каждого в колонках список свойств. И в цикле пробегать по объектам и по внутреннему циклу по свойствам, подставлять все по очереди и получать значения. И для добавления еще одного мне нужно будет только добавить на лист объект или свойство. В код при этом лазить не нужно будет.
Но я уперся в это вот, нужно как-то подставлять в объект вместо свойства переменную. Для этого я и сделал этот крошечный пример. Здесь никто конечно не будет перебирать свойства в таком дурацком цикле, тем более, что свойства разные по формату, кому-то нужны цифры, кому-то булево значение. Так что этот пример смысла не имеет, но дает понять задачу.
Источник
В данном примере описаны макросы для автоматического форматирования или спроса формата для ячеек таблиц Excel средствами VBA.
VBA-макрос: заливка, шрифт, линии границ, ширина столбцов и высота строк
В процессе запыления данных сотрудниками отдела на некоторых листах были изменены форматы ячеек:
Необходимо сбросить форматирование ячеек и сделать так чтобы на всех таблицах планов выполнения работ были одинаковые форматы отображения данных. Формат ячеек для исходной таблицы должен быть закреплен за шаблоном, чтобы можно было сделать сброс и применять заданный стиль оформления в дальнейшем.
Чтобы выполнять такие задачи вручную можно попытаться облегчить процесс настройки множества опций форматирования для многих диапазонов ячеек на разных листах и рабочих книгах. Плюс к о всему можно ошибиться и применить несколько другие настройки форматирования.
Макросы Excel прекрасно справляются с форматированием ячеек на рабочих листах. Кроме того, делают это быстро и в полностью автоматическом режиме. Воспользуемся этими преимуществами и для решения данной задачи напишем свой код VBA-макроса. Он поможет нам быстро и безопасно сбрасывать форматы на исходный предварительно заданный в шаблоне главной таблицы.
Чтобы написать свой код макроса откройте специальный VBA-редактор в Excel: «РАЗРАБОТЧИК»-«Код»-«Visual Basic» или нажмите комбинацию клавиш ALT+F11:
В редакторе создайте новый модуль выбрав инструмент «Insert»-«Module» и введите в него такой VBA-код макроса:
Sub SbrosFormat()
If TypeName(Selection) <> "Range" Then Exit Sub
With Selection
.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
Первая инструкция в коде, проверяет выделены ли ячейки диапазоном. Если перед выполнением макроса выделил другой элемент листа, например, график, тогда макрос закрывается и дальнейшие инструкции выполняться не будут. В противные случаи будут форматироваться все выделенные ячейки по очереди в соответствии с определенными настройками форматирования:
- Текст в значениях ячеек выравнивается по центру горизонтально и вертикально.
- Включен построчный перенос текста.
- Все границы ячеек получают черную обычной толщины непрерывную линию с черным цветом.
- Сброс цвета шрифта на авто.
- Удаляется любая заливка ячеек.
- Ширина столбцов автоматически настраивается под текст в ячейках.
- Автоматически настроить высоту строк по содержимому ячеек.
Модификация исходного кода макроса для форматирования
Если необходимо сделать так чтобы текст выравнивался не по центру относительно горизонтали, а по правую сторону ячейки, тогда измените константу xlHAlignCenter на xlHAlignRight. Она находиться в свойстве .HorizontalAlignment. Сделайте это следующим образом:
.HorizontalAlignment = xlHAlignRight.
Таким же образом можно выровнять текст по левую сторону изменив значение константы на xlHAlignLeft. Или можно выровнять положение текста по ширине ячейки используя константу xlHAlignJustify.
Чтобы макрос выравнивал текст в ячейках по вертикали к низу, измените строку кода, отвечающую за данную настройку форматирования. Измените константу, которая присваивается к свойству VerticalAlignment в следующий способ:
Если хотите выровнять текс к верху ячейки, тогда воспользуйтесь константой xlHAlignTop.
Если нужно применить для границ ячеек толстую и пунктирную линию в синем цвете, смодифицируйте инструкцию, отвечающую за формат линий:
.Borders.LineStyle = xlDash
.Borders.Color = vbBlue
.Borders.Weight = xlMedium
Описание настройки форматирования для линий границ ячеек. Мы будем получать разные дополнительные типы линий границ если для свойства LineStyle присваивать такие константы:
- xlDoshDot – применяется для рисования пунктирных линий в границах ячеек;
- xlDouble – рисует двойную линию;
- xlHairLine – рисует тонкую линию;
- xlThick – для рисования очень толстой линии.
Для настройки цвета линий Excel предлагает всего 8 констант для определенных цветов. Константы для настройки цвета линий границ для свойства Color:
- vbBlack – черный;
- vbWhite – белый;
- vbRed – красный;
- vbGreen –зеленый;
- vbBlue – синий;
- vbYellow – желтый;
- vbMagenta – алый;
- vbCyan – голубой.
Но при необходимости присвоить линиям границ другие цвета можно вместо константы для свойства Color записать функцию RGB(). Достаточно лишь в аргументе этой функции указать код цвета по шкале от 0 и до 255.
Если нужно применить толстую линию только для границ выделенного диапазона, тогда перед инструкцией End With добавьте следующую строку кода:
.BorderAround xlContinuous, xlMedium, vbBlack
Описание: В первом аргументе для метода BorderAround можно записать также другой стиль линии. Во втором – толщину линии, а в третьем – цвет. Константы, которые можно присвоить в качестве значений для этих аргументов можно использовать те же, которые мы использовали для свойств: LineStyle, Weight, Color.
Если нужно экспонировать первую строку для выделенного диапазона с помощью жирного и курсивного шрифта значений ячеек. А также заполнить ячейки первой строки заливкой с голубым цветом, тогда в самом конце кода макроса перед последней инструкцией End Sub следует добавить несколько строк с VBA-кодом:
.Rows(1).Font.Bold = True
.Rows(1).Font.Italic = True
.Rows(1).Interior.Color = vbCyan
Если хотите присвоить такой же формат для не только для первой строки, но и для первого столбца выделенного диапазона, тогда скопируйте и вставьте ниже эти 3 строчки кода. После в последних трех строках измените свойство Rows на Columns.
.Columns (1).Font.Bold = True
.Columns (1).Font.Italic = True
.Columns (1).Interior.Color = vbCyan
Если нужно задать особенный формат для экспонирования последней строки выделенного диапазона, тогда измените число 1 в аргументе свойства Rows на число всех выделенных строк .Rows.Count. Например, добавьте в конец кода еще такую строку:
.Rows(.Rows.Count).Font.Bold = True
Полная версия модифицированного кода макроса выглядит так:
Sub SbrosFormat()
If TypeName(Selection) <> "Range" Then Exit Sub
With Selection
.HorizontalAlignment = xlVAlignCenter
.VerticalAlignment = xlVAlignCenter
.WrapText = True
.Borders.LineStyle = xlDash
.Borders.Color = vbBlue
.Borders.Weight = xlMedium
.Font.ColorIndex = xlColorIndexAutomatic
.Interior.ColorIndex = xlColorIndexAutomatic
.Columns.AutoFit
.Rows.AutoFit
.BorderAround xlContinuous, xlMedium, vbBlack
.Rows(1).Font.Bold = True
.Rows(1).Font.Italic = True
.Rows(1).Interior.Color = vbCyan
.Columns(1).Font.Bold = True
.Columns(1).Font.Italic = True
.Columns(1).Interior.Color = vbCyan
.Rows(.Rows.Count).Font.Bold = True
End With
End Sub
Пример работы измененного кода VBA-макроса:
В данном примере вы ознакомились с базовыми возможностями форматирования с помощью VBA-макросов. Уверен, что теперь вы сможете самостоятельно найти практическое применение этим исходным кодам.