Условное изменение начертания и размера шрифта (Microsoft Excel)
Робин спрашивает, есть ли способ использовать возможности условного форматирования Excel для изменения шрифта, используемого в ячейке, или для изменения размера шрифта в ячейке. Короткий ответ — нет, это невозможно, по крайней мере, с условным форматированием. (Элементы управления, позволяющие указать имя и размер шрифта, отображаются серым цветом в диалоговом окне форматирования, используемом с условным форматированием.)
Однако вы можете использовать макрос для проверки содержимого ячейки и внесения изменений в ее внешний вид. Рассмотрим следующий макрос, который проверяет все ячейки, которые вы выбрали при запуске макроса. Если какая-либо из ячеек имеет длину более двух символов или значение более 10, то шрифт ячейки изменяется.
Sub DoReformat() Dim rCell As Range For Each rCell In Selection.Cells If Len(rCell.Text) > 2 Or _ Val(rCell.Value) > 10 Then rCell.Font.Name = "Arial" rCell.Font.Size = 16 Else rCell.Font.Name = "Times New Roman" rCell.Font.Size = 12 End If Next End Sub
Чтобы использовать макрос, просто выберите ячейки, которые вы хотите изменить, а затем запустите макрос. Если вы хотите, чтобы форматирование изменялось более автоматически, вы можете настроить макрос, чтобы увидеть, было ли изменение внесено в определенный диапазон ячеек:
Private Sub Worksheet_Calculate() Dim rng As Range Dim rCell As Range Set rng = Range("A1:A10") For Each rCell In rng If Len(rCell.Text) > 2 Or _ Val(rCell.Value) > 10 Then rCell.Font.Name = "Arial" rCell.Font.Size = 16 Else rCell.Font.Name = "Times New Roman" rCell.Font.Size = 12 End If Next End Sub
Этот макрос, добавленный к объекту рабочего листа, будет запускаться каждый раз при пересчете рабочего листа. Он проверяет диапазон A1: A10, применяя те же тесты, что и в предыдущем макросе. В результате форматирование ячеек постоянно проверяется и изменяется. Чтобы макрос проверял другой диапазон, просто измените адреса, присвоенные переменной rng в начале макроса.
Одним из недостатков этого макроса является то, что он может работать медленно, если у вас есть очень большой диапазон для проверки. Это будет происходить очень быстро, если вы проверяете A1: A10 (десять ячеек), но может идти намного медленнее, если вы постоянно проверяете B2: N465 (более 6000 ячеек). В этом случае вы можете разработать макрос так, чтобы он запускался всякий раз, когда рабочий лист изменяется, но предпринимает действия только в том случае, если изменение было внесено в ячейку в целевом диапазоне. Следующая версия также добавляется к объекту рабочего листа:
Private Sub Worksheet_Change(ByVal Target As Range) Dim rCell As Range If Union(Target, Range("A1:A10")).Address = _ Range("A1:A10").Address Then Application.EnableEvents = False For Each rCell In Target If Len(rCell.Text) > 2 Or _ Val(rCell.Value) > 10 Then rCell.Font.Name = "Arial" rCell.Font.Size = 16 Else rCell.Font.Name = "Times New Roman" rCell.Font.Size = 12 End If Next Application.EnableEvents = True End If End Sub
Макрос использует функцию Union, чтобы проверить, совпадают ли измененные ячейки (переданные обработчику событий в переменной Target) с диапазоном, который вы хотите проверить. Если да, то проверка выполняется в ячейках в целевом диапазоне.
При работе с макросами, влияющими на форматирование, следует помнить одну вещь: если условное форматирование применяется к ячейке, которая также проверяется макросом, форматирование в условном форматировании имеет приоритет над форматированием в макросе. Если ваш макрос изменяет имя и размер шрифта, это не вызывает большого беспокойства, поскольку условное форматирование не повлияет на эти атрибуты. Однако, если вы измените свой макрос, чтобы также изменить другой атрибут формата, например цвет ячейки, и этот атрибут также будет изменен условным форматом, то это не будет выглядеть так, как будто макрос что-то сделал, потому что Excel использует условное форматирование в предпочтении что делает макрос.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (13236) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:
link: / excel-Changing_Font_Face_and_Size_Conditional [Условное изменение шрифта и размера]
.