In this article I will explain how you can use VBA to add strikethrough to the font of cells and ranges. I’ve also provided a sample code which checks if a cell has the strikethrough font or not.
You can download the file and code related to this article here.
Jump To:
- Basics
- Example 1, Set Strikethrough
- Example 2, Get Strikethrough Status
–
Basics:
The code below adds a strikethrough to the font in cell A1:
Range("A1").Font.Strikethrough = True
Before:
After:
The following line of code removes the strikethrough from the font in cell A1:
Range("A1").Font.Strikethrough = False
The following line of code prints the current strikethrough status of the font in cell A1 in cell B1:
Cells(1, 2) = Range("A1").Font.Strikethrough
False:
True:
–
Example 1, Set Strikethrough:
In this example there is some text written in row 1. There are also drop down lists in row 2 with the value Yes and No. When the user changes the value of a drop down list in row 2 to true, a strikethrough will be added to the font in row 1. When the user changes the value of the drop down list back to No, the strikethrough will be removed from the cell in row 1:
Private Sub worksheet_change(ByVal target As Range)
Dim i As Integer
'iterates through the cells in row 1
For i = 1 To 4
If Cells(2, i) = "Yes" Then
'adds a strikethrough to the cell in row 1
Range(Cells(1, i), Cells(1, i)).Font.Strikethrough _
= True
Else
'removes the strikethrough from the cell in row 1
Range(Cells(1, i), Cells(1, i)).Font.Strikethrough _
= False
End If
Next i
End Sub
The program uses a Worksheet_Change event handler. The event handler executes whenever the user selects a new value from the drop down lists:
Private Sub worksheet_change(ByVal target As Range)
The code below iterates through the cells in row 1:
For i = 1 To 4
...
End Sub
The If statement checks if the user selected “Yes” or “No” from the drop down lists:
If Cells(2, i) = "Yes" Then
The code below adds a strikethrough to the font in the cell in row 1:
Range(Cells(1, i), Cells(1, i)).Font.Strikethrough _
= True
The code below removes the strikethrough from the font in the cell in row 1:
Range(Cells(1, i), Cells(1, i)).Font.Strikethrough _
= False
After selecting the “Yes” value from the drop down list a strikethrough is added to the font in cell D1:
The drop down lists are created using data validation. The source for the data validation can be found in sheet 2:
For more information about creating drop down lists in Excel please see Excel VBA, Drop Down Lists.
–
Example 2, Get Strikethrough Status:
In this example when the user presses the Run button, the program will loop through the cells in row 1. If the font in the cell has a strikethrough the cell in row 2 will be colored green:
'executes when the user presses the Run button
Private Sub btnRun_Click()
Dim i As Integer
'loops through the cells in row 1
For i = 1 To 4
'checks if the font in the cell in row 1 has the
'strikethrough property
If Range(Cells(1, i), Cells(1, i)).Font.Strikethrough = True Then
'changes the color in the cell in row 2 to green
Range(Cells(2, i), Cells(2, i)).Interior.Color = 3394611
Else
'removes the color from the cell in row 2
Range(Cells(2, i), Cells(2, i)).Interior.Color = xlNone
End If
Next i
End Sub
The main function is the Button_Click event handler which executes when the user presses the Run button::
Private Sub btnRun_Click()
The code below loops through the cells in row 1:
For i = 1 To 4
...
Next i
The If statement checks if the cell in row 1 has the strikethrough property or not:
If Range(Cells(1, i), Cells(1, i)).Font.Strikethrough = True Then
The line below changes the fill color of the cell in row 2 to green. The number 3394611 is a color code. The color code was found using the macro recorder. For more information on this topic please see Excel VBA, Getting the Color Code Using the Macro Recorder.
Range(Cells(2, i), Cells(2, i)).Interior.Color = 3394611
The line below removes the fill color of the cell in row 2:
Range(Cells(2, i), Cells(2, i)).Interior.Color = xlNone
In the figure below none of the cells in row 1 have strikethrough:
After adding strikethrough to some of the cells and pressing the Run button:
You can download the file and code related to this article here.
See also:
- VBA, Excel Font Formatting
- Excel VBA, Formatting Cells and Ranges Using the Macro Recorder
If you need assistance with your code, or you are looking for a VBA programmer to hire feel free to contact me. Also please visit my website www.software-solutions-online.com
dmt. Пользователь Сообщений: 91 |
Добрый день! Подскажите, пожалуйста, как в Label указать зачеркнутый текст. Суть в следующем — при формировании документа данные из ячейки передаются в label (текст не зачеркнутый), при этом, если в ячейки нет данных, то в label должен отобразить знак [img]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAVCAYAAACzK0UYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACwSURBVEhL7ZXBDcMgDEVNt3IHouO409Bh6C6urVrAAVKBSU95khUJkTyZ7ySBBTiZm11P5ZJMUSWvB4QQBnWH59v2raDTNSYzIcj0RU62ssKxJEUdb44eg3AgSRxFAEjSj4+hJEU9JmTyGoS+JBOjduE9J6Mj2RN2S/l26aj+wrZOU94TfYAkARK2REEgUdharWXk5kIm3BZ2S5VsDrulSL5daOD9Qkd7109rij9IAD4aPGfP+HaBVgAAAABJRU5ErkJggg==[/img](по сути это зачеркнутая заглавная буква Z). А если в ячейку потом ввели текст, то в label он должен передаться как не зачеркнутый. Спасибо! |
RAN Пользователь Сообщений: 7091 |
#2 21.11.2014 23:23:54
Изменено: RAN — 21.11.2014 23:24:48 |
||
dmt. Пользователь Сообщений: 91 |
#3 22.11.2014 00:00:26 Спасибо большое!!! Только пришлось немного подправить, так как в Вашем коде в lablе при каждом щелчке менялся текст с зачеркнутого на не зачеркнутый.
Если этот код можно сократить, то помогите, пожалуйста, уж слишком большой он получается, учитывая то, что на листе будет около двадцати lable-ов (связанных с разными ячейками). Спасибо большое! Изменено: dmt. — 22.11.2014 21:56:47 |
||
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#4 22.11.2014 00:34:09
Контролируйте, по какой ячейке кликнули, и меняйте в соответствующем контроле. |
||
dmt. Пользователь Сообщений: 91 |
#5 22.11.2014 00:51:02 А можно сделать что — то вроде таргета как с ячейками. Например,
Правда, не получается его привести в рабочий вид. Изменено: dmt. — 22.11.2014 21:57:05 |
||||
Максим Зеленский Пользователь Сообщений: 4646 Microsoft MVP |
#6 22.11.2014 11:05:06 Можно, если ячейка попадает в нужный диапазон, побегать циклом по Labels и проверять у них ControlSource, если адрес совпадает — делать изменения. F1 творит чудеса |
Содержание
- Полужирный, Курсив, Размер, Зачеркивное, Подчеркивание, Вес
- Синтаксис
- Settings
- Замечания
- См. также
- Поддержка и обратная связь
- VBA Excel. Форматирование текста в ячейке (объект Font)
- Формат отображаемого значения
- Основные свойства объекта Font
- Примеры форматирования текста
- 5 комментариев для “VBA Excel. Форматирование текста в ячейке (объект Font)”
- Excel VBA Font (Color, Size, Type, and Bold)
- Key Notes
- VBA Font Object
- Syntax
- VBA Font Color
- 1. Using Color Constants
- 2. Using RGB
- VBA Font Size
- VBA Font Name
- VBA Font Bold, Italic, and Underline
- Other Useful Font Properties
- Шрифт ячейки VBA — изменение цвета, размера, стиля и т. Д.
- Шрифт ячейки VBA
- Изменить цвет шрифта
- vbColor
- Цвет — RGB
- ColorIndex
- Размер шрифта
- Жирный шрифт
- Название шрифта
- Стиль ячейки
Полужирный, Курсив, Размер, Зачеркивное, Подчеркивание, Вес
Задаются визуальные атрибуты текста на отображаемой или печатаемой форме.
Синтаксис
object. Полужирный [ = логический ]
object. Курсив [= логическое ]
object. Размер [= валюта ]
object. StrikeThrough [= Boolean ]
object. Подчеркивание [= логическое значение ]
object. Weight [= Integer ]
Синтаксис свойств Bold, Italic, Size, StrikeThrough, Underline и Weight состоит из следующих частей:
Part | Описание |
---|---|
object | Обязательно. Допустимое имя объекта. |
Boolean | Необязательный параметр. Задает начертание шрифта. |
Currency | Необязательный параметр. Число, показывающее размер шрифта. |
Integer | Необязательный параметр. Задает начертание шрифта. |
Settings
Значениями для Boolean являются:
Значение | Описание |
---|---|
True | Текст имеет заданный атрибут (т. е. жирный, курсив, размер, метки зачеркивания или подчеркивания либо плотность). |
False | Текст не имеет заданного атрибута (по умолчанию). |
Свойство Weight принимает значения от 0 до 1000. Значение, равное нулю, позволяет системе подбирать наиболее подходящую плотность. Значение от 1 до 1000 показывает какую-нибудь конкретную плотность, где 1 представляет самый светлый тип и 1000 представляет самый темный тип.
Замечания
Эти свойства определяют визуальные характеристики текста:
- Свойством Bold определяется, будет ли текст стандартным или жирным.
- Свойством Italic определяется, будет ли текст стандартным или наклонным.
- Свойством Size определяется высота отображаемого текста в пунктах.
- Свойством Underline определяется, будет ли текст подчеркнутым.
- Свойством StrikeThrough определяется, отображается ли текст с метками перечеркивания.
- Свойством Weight определяется степень насыщенности шрифта.
Вид шрифта на экране и на распечатке может быть разным в зависимости от компьютера и принтера. Если выбран шрифт, который не может отображаться системой с заданным атрибутом, или если он не установлен, операционной системой производится замена на похожий шрифт. Заменяющий шрифт подбирается максимально похожим на заменяемый шрифт, запрошенный первоначально.
Изменение значения Bold также изменяет значение Weight. При задании полужирным шрифтом значение True для параметра Вес равно 700; Для параметра Полужирным шрифтом значение False для параметра Вес равно 400. И наоборот, при установке значения «Вес » больше 550 значение «Полужирный» имеет значение True; Для параметра Weight (Вес) значение 550 или меньше , для параметра Полужирное значение равно False.
Выраженный в пунктах размер по умолчанию определяется операционной системой.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office 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 Font (Color, Size, Type, and Bold)
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
To use it, first, you need to define the cell address, which you can specify in the following ways.
VBA Font Color
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:
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:
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:
If you want to apply font size to all cells in a worksheet you can use the following code:
And if only want to apply font size to cells where you have data, the code would be:
Or to the selected cell.
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:
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.
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).
Источник
Шрифт ячейки 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»:
Источник
- Var13
- Начинающий
- Сообщения: 13
- Зарегистрирован: 11.04.2007 (Ср) 10:54
Excel — как выделить строки с зачеркнутым шрифтом ?
Задача в Excel следующая:
Иммется строки с обычным шрифтом и с зачёркнутым(т.е. устаревшие данные), необходимо оставить строки только с незачеркнутым шрифтом.
Как Excel — как выделить строки с зачеркнутым шрифтом с помощью формулы, чтобы в соседней ячеке получить какой нибудь флаг о таком форматировании ?
=ЯЧЕЙКА(«формат»;X28) — не дает разности в результатах зачеркнутого и незачеркнутого шрифта.
Есть идеи ???
Сергей
- alibek
- Большой Человек
- Сообщения: 14205
- Зарегистрирован: 19.04.2002 (Пт) 11:40
- Откуда: Russia
alibek » 03.09.2007 (Пн) 16:58
Средствами формул этого не сделать, пожалуй.
Макросы не подходят?
Lasciate ogni speranza, voi ch’entrate.
- Var13
- Начинающий
- Сообщения: 13
- Зарегистрирован: 11.04.2007 (Ср) 10:54
Excel — как выделить строки с зачеркнутым шрифтом ?
Var13 » 06.09.2007 (Чт) 7:25
Можно и макросом, но каким оператором воять ?
Зачеркнуть текст — получается:
Range(«A2»).Select
With Selection.Font
.Strikethrough = True
End With
а как найти по зачеркнутому?
Сергей
- bi-lya
- Обычный пользователь
- Сообщения: 87
- Зарегистрирован: 07.08.2006 (Пн) 15:36
bi-lya » 06.09.2007 (Чт) 7:34
Перебирать и
If .Strikethrough = True Then MsgBox «»
Вернуться в VBA
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Hi Chaegie,
Not sure but I thought you were looking for a C# solution. Here is something quick and dirty. I’m sure there is a more eloquent solution but this works. And, at the very least, it shows the C# syntax to detect strike-through as a starting point for you.
using Microsoft.Office.Core;
using Excel = Microsoft.Office.Interop.Excel;
…
…
//open some workbook and get a spreadsheet…
Excel.Application app = new Excel.Application();
Excel.Workbook workbook = app.Workbooks.Open(«workbook name»,
Type.Missing, Type.Missing,
Type.Missing, Type.Missing,
Type.Missing, Type.Missing,
Type.Missing, Type.Missing,
Type.Missing, Type.Missing,
Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
//get the worksheet from the workbook
Excel.Worksheet ws = (Excel.Worksheet)app.Sheets[«worksheet name»];
…
…
//set a range equal to a single cell that has your text that needs cleaned
Excel.Range range = worksheet.get_Range(«somecell», «somecell»);
string clean_string = CleanStrikethroughChars(Excel.Range range);
//now you can replace the cell value with the clean_string value
…
…
string CleanStrikethroughChars(Excel.Range range)
{
string s=»»;
int char_index = 1;
int length = range.Cells.Value2.ToString().Length;
while(char_index<length)
{
//just keep building the string with any char that is not strikethrough
if(!(bool)range.Cells.get_Characters(char_index,1).Font.Strikethrough;)
s+=range.Cells.get_Characters(char_index,1).Text;
char_index++;
}
return s;
}