Робин спрашивает, есть ли способ использовать возможности условного форматирования 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 [Условное изменение шрифта и размера].