Excel макросы изменение шрифта

Форматирование текста в ячейке при помощи кода 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
Регистрация: 07.09.2017

Есть много ячеек, в каждой ячейке текст (две строчки), например

Текст 1
Текст 2

параметры шрифта для обоих текстов (Calibri, размер 11)

нужно написать макрос который будет менять параметры шрифта в выбранных ячейках
нужно Текст 1 уменьшить размер с 11 уменьшить до 9
а Текст 2 увеличить размер с 11 до 13 и сделать текст полужирным.
Текст 1
Текст 2

Хотелось бы чтобы макрос работал для всех выделенных ячеек…
Спасибо…[ :)

Изменено: Oleksandr07.09.2017 10:46:53

 

V

Пользователь

Сообщений: 5018
Регистрация: 22.12.2012

файл покажите. или какой разделитель между текст1 и текст2. символ10 или просто через формат ячейки «перенос по словам»?

 

Oleksandr

Пользователь

Сообщений: 14
Регистрация: 07.09.2017

разделитель между текстами СИМВОЛ (10)…
в шапку добавить пример файла…

 

V

Пользователь

Сообщений: 5018
Регистрация: 22.12.2012

а теперь согласно файла в каком столбце это все должно происходить.

 

Oleksandr

Пользователь

Сообщений: 14
Регистрация: 07.09.2017

исходные данные в столбце E… можно редактировать прямо там (но там внутри формула)…
или скопировать в соседний столбец F (отредактированный текст из E)…
как проще так и сделайте…

Спасибо :)

Изменено: Oleksandr07.09.2017 17:27:44

 

Alemox

Пользователь

Сообщений: 2183
Регистрация: 25.02.2013

#6

07.09.2017 10:59:11

Код
Sub Alemox()
Dim a As Integer
Dim Ячейка As Range
For Each Ячейка In Selection.Cells
    For a = 1 To Len(Ячейка.Text) Step 1
        If Mid(Ячейка.Text, a, 1) = Chr(10) Then
            Ячейка.Characters(Start:=1, Length:=a).Font.Size = 10
            With Ячейка.Characters(Start:=a + 1, Length:=Len(Ячейка.Text) - a).Font
                .Size = 14
                .Bold = True
            End With
            Exit For
        End If
    Next a
Next Ячейка
End Sub

Но данное изменение не применимо для формул

Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.

 

Alemox

Пользователь

Сообщений: 2183
Регистрация: 25.02.2013

файл с примером

Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.

 

Oleksandr

Пользователь

Сообщений: 14
Регистрация: 07.09.2017

#8

07.09.2017 11:08:25

Цитата
Alemox написал:
Но данное изменение не применимо для формул

тогда я скопирую (как значения)  данные из ячеек с формулами в соседний столбец и к нему применю Ваш макрос…

Спасибо!!!  :)
Макрос работает так как и хотелось…. :D

 

V

Пользователь

Сообщений: 5018
Регистрация: 22.12.2012

#9

07.09.2017 11:25:49

еще вариант (копирует выделенное в соседний столбец справа и там обрабатывает)

Код
Sub vvv()
Application.ScreenUpdating = False
Selection.Copy
Selection.Offset(, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Application.CutCopyMode = False
For Each t In Selection
n = InStr(t, Chr(10))
   With t.Characters(Start:=1, Length:=n).Font
        .FontStyle = "обычный"
        .Size = 9
   End With
   With t.Characters(Start:=n + 1, Length:=99).Font
        .FontStyle = "полужирный"
        .Size = 13
   End With
Next
Application.ScreenUpdating = True
End Sub

Изменено: V07.09.2017 11:28:11

 

Oleksandr

Пользователь

Сообщений: 14
Регистрация: 07.09.2017

#10

07.09.2017 11:29:45

Цитата
V написал:
еще вариант

о этот макрос сам и копирует отредактированные данные в соседний столбец…
Спасибо!!! :D  

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#11

07.09.2017 11:42:56

На месте, без вн. цикла:

Код
Sub www()
    Dim c As Range, a
    With Selection
        a = .Value: .NumberFormat = "@": .Value = a
        .Font.Size = 10:
        For Each c In .Cells
            c.Characters(InStr(1, c, Chr(10)) + 1).Font.Size = 14
            c.Characters(InStr(1, c, Chr(10)) + 1).Font.Bold = True
        Next
    End With
End Sub

Я сам — дурнее всякого примера! …

В данном примере описаны макросы для автоматического форматирования или спроса формата для ячеек таблиц Excel средствами VBA.

VBA-макрос: заливка, шрифт, линии границ, ширина столбцов и высота строк

В процессе запыления данных сотрудниками отдела на некоторых листах были изменены форматы ячеек:

запыления планов работ.

Необходимо сбросить форматирование ячеек и сделать так чтобы на всех таблицах планов выполнения работ были одинаковые форматы отображения данных. Формат ячеек для исходной таблицы должен быть закреплен за шаблоном, чтобы можно было сделать сброс и применять заданный стиль оформления в дальнейшем.

Чтобы выполнять такие задачи вручную можно попытаться облегчить процесс настройки множества опций форматирования для многих диапазонов ячеек на разных листах и рабочих книгах. Плюс к о всему можно ошибиться и применить несколько другие настройки форматирования.

Макросы Excel прекрасно справляются с форматированием ячеек на рабочих листах. Кроме того, делают это быстро и в полностью автоматическом режиме. Воспользуемся этими преимуществами и для решения данной задачи напишем свой код VBA-макроса. Он поможет нам быстро и безопасно сбрасывать форматы на исходный предварительно заданный в шаблоне главной таблицы.

Чтобы написать свой код макроса откройте специальный VBA-редактор в Excel: «РАЗРАБОТЧИК»-«Код»-«Visual Basic» или нажмите комбинацию клавиш ALT+F11:

Код Visual Basic.

В редакторе создайте новый модуль выбрав инструмент «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

VBA-код макроса.

Теперь если нам нужно сбросить форматирование таблицы на исходный формат отображения ее данных, выделите диапазон ячеек A1:E20 и запустите макрос: «РАЗРАБОЧТИК»-«Код»-«Макросы»-«SbrosFormat»-«Выполнить». Результат работы макроса изображен ниже на рисунке:

сбросить форматирование таблицы на исходный формат.

Таблица приобрела формат, который определен макросом. Таким образом код VBA нам позволяет сбросить любые изменения формата ячеек на предустановленный автором отчета.



Описание VBA-макроса для формата ячеек таблицы Excel

Первая инструкция в коде, проверяет выделены ли ячейки диапазоном. Если перед выполнением макроса выделил другой элемент листа, например, график, тогда макрос закрывается и дальнейшие инструкции выполняться не будут. В противные случаи будут форматироваться все выделенные ячейки по очереди в соответствии с определенными настройками форматирования:

  1. Текст в значениях ячеек выравнивается по центру горизонтально и вертикально.
  2. Включен построчный перенос текста.
  3. Все границы ячеек получают черную обычной толщины непрерывную линию с черным цветом.
  4. Сброс цвета шрифта на авто.
  5. Удаляется любая заливка ячеек.
  6. Ширина столбцов автоматически настраивается под текст в ячейках.
  7. Автоматически настроить высоту строк по содержимому ячеек.

Модификация исходного кода макроса для форматирования

Если необходимо сделать так чтобы текст выравнивался не по центру относительно горизонтали, а по правую сторону ячейки, тогда измените константу 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-макросов. Уверен, что теперь вы сможете самостоятельно найти практическое применение этим исходным кодам.

Содержание

  1. Шрифт ячейки VBA — изменение цвета, размера, стиля и т. Д.
  2. Шрифт ячейки VBA
  3. Изменить цвет шрифта
  4. vbColor
  5. Цвет — RGB
  6. ColorIndex
  7. Размер шрифта
  8. Жирный шрифт
  9. Название шрифта
  10. Стиль ячейки
  11. Макросы для изменения формата ячеек в таблице Excel
  12. VBA-макрос: заливка, шрифт, линии границ, ширина столбцов и высота строк
  13. Описание VBA-макроса для формата ячеек таблицы Excel
  14. Модификация исходного кода макроса для форматирования
  15. VBA Excel. Форматирование текста в ячейке (объект Font)
  16. Формат отображаемого значения
  17. Основные свойства объекта Font
  18. Примеры форматирования текста
  19. 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

Первая инструкция в коде, проверяет выделены ли ячейки диапазоном. Если перед выполнением макроса выделил другой элемент листа, например, график, тогда макрос закрывается и дальнейшие инструкции выполняться не будут. В противные случаи будут форматироваться все выделенные ячейки по очереди в соответствии с определенными настройками форматирования:

  1. Текст в значениях ячеек выравнивается по центру горизонтально и вертикально.
  2. Включен построчный перенос текста.
  3. Все границы ячеек получают черную обычной толщины непрерывную линию с черным цветом.
  4. Сброс цвета шрифта на авто.
  5. Удаляется любая заливка ячеек.
  6. Ширина столбцов автоматически настраивается под текст в ячейках.
  7. Автоматически настроить высоту строк по содержимому ячеек.

Модификация исходного кода макроса для форматирования

Если необходимо сделать так чтобы текст выравнивался не по центру относительно горизонтали, а по правую сторону ячейки, тогда измените константу 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 список объектов и слева от каждого в колонках список свойств. И в цикле пробегать по объектам и по внутреннему циклу по свойствам, подставлять все по очереди и получать значения. И для добавления еще одного мне нужно будет только добавить на лист объект или свойство. В код при этом лазить не нужно будет.
Но я уперся в это вот, нужно как-то подставлять в объект вместо свойства переменную. Для этого я и сделал этот крошечный пример. Здесь никто конечно не будет перебирать свойства в таком дурацком цикле, тем более, что свойства разные по формату, кому-то нужны цифры, кому-то булево значение. Так что этот пример смысла не имеет, но дает понять задачу.

Источник

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:

  1. vbBlack: Black
  2. vbRed: Red
  3. vbGreen: Green
  4. vbYellow: Yellow
  5. vbBlue: Blue
  6. vbMagenta: Magenta
  7. vbCyan: Cyan
  8. 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

    0 / 0 / 0

    Регистрация: 07.04.2014

    Сообщений: 5

    1

    Написать макрос для изменения размера шрифта и цвета шрифта

    07.04.2014, 22:18. Показов 13993. Ответов 5


    Студворк — интернет-сервис помощи студентам

    № 1 . Создайте в рабочем листе таблицу с данными о своих друзьях , их адресами, телефонами , датами рождения и т.п. Напишите макрос и назовите его своей фамилией для изменения размера шрифта для записи фамилий друзей и для изменения размера цвета шрифта для столбца даты рождения . Размер шрифта , его название на цвет выберите самостоятельно.



    0



    Programming

    Эксперт

    94731 / 64177 / 26122

    Регистрация: 12.04.2006

    Сообщений: 116,782

    07.04.2014, 22:18

    5

    Stormy Day

    40 / 40 / 9

    Регистрация: 19.03.2014

    Сообщений: 215

    08.04.2014, 09:02

    2

    Примерно так и в этом духе

    Visual Basic
    1
    2
    3
    4
    5
    
     Sub matsalak()
     
        ActiveCell.Interior.Color = 60005
         
     End Sub



    1



    0 / 0 / 0

    Регистрация: 07.04.2014

    Сообщений: 5

    08.04.2014, 09:27

     [ТС]

    3

    Я в совсем в Excel ничего не понимаю(



    0



    Stormy Day

    40 / 40 / 9

    Регистрация: 19.03.2014

    Сообщений: 215

    08.04.2014, 10:57

    4

    Лучший ответ Сообщение было отмечено Ilona Matsalak как решение

    Решение

    Ilona Matsalak,

    Visual Basic
    1
    2
    3
    4
    5
    
    Sub Matsalak()
        ActiveCell.Interior.Color = 60005
        ActiveCell.Font.Name = "Verdana"
         ActiveCell.Font.Size = 14
          End Sub

    Вот пример замены значения в активной ячейке. Если в Экзель ничего не понимаете, то как задачу решать намерены?

    Вложения

    Тип файла: xlsx Kniga1.xlsx (13.5 Кб, 48 просмотров)



    1



    0 / 0 / 0

    Регистрация: 07.04.2014

    Сообщений: 5

    08.04.2014, 13:24

     [ТС]

    5

    если б я знала как ето делать я б не просила о помощи(



    0



    5942 / 3154 / 698

    Регистрация: 23.11.2010

    Сообщений: 10,524

    08.04.2014, 13:29

    6

    Ilona Matsalak, откройте файл Excel? там есть Справка, найдите Запись макроса. И почитайте. Будете иметь представление.



    1



    IT_Exp

    Эксперт

    87844 / 49110 / 22898

    Регистрация: 17.06.2006

    Сообщений: 92,604

    08.04.2014, 13:29

    6

    изменение шрифта активной ячейки и возврат в исходное

    grh1

    Дата: Пятница, 07.02.2020, 12:49 |
    Сообщение № 1

    Группа: Проверенные

    Ранг: Форумчанин

    Сообщений: 200


    Репутация:

    0

    ±

    Замечаний:
    40% ±


    2019

    Добрый день, знатоки VBA!
    Скачал на просторах макрос подсветки активной строки и ячейки цветом.
    Вставил с помощью макрорекордера изменение цвета шрифта активной ячейки на белый цвет, а как сделать, чтобы шрифт возвращался в изначальное состояние (после того, как ячейка становится опять не активной) не знаю. Подскажите пожалуйста, какую строчку прописать в блоке «цвет шрифта в активной ячейке»?
    Весь код макроса:
    [vba]

    Код

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
            If Target.Cells.Count <= 2500 Then
                ActiveSheet.Cells.FormatConditions.Delete
            Dim RSMin As Integer
            Dim CSMin As Integer
            Dim RSMax As Integer
            Dim CSMax As Integer
        ‘ ——————————————
            For Each Target In Selection.Cells
                If RSMin = 0 Then RSMin = Target.Row
                If CSMin = 0 Then CSMin = Target.Column
                If Target.Row < RSMin Then
                RSMin = Target.Row
            ElseIf Target.Row > RSMax Then
                RSMax = Target.Row
            End If
                If Target.Column < CSMin Then
                CSMin = Target.Column
            ElseIf Target.Column > CSMax Then
                CSMax = Target.Column
            End If
            Next
        ‘———цвет активной строки—————
            With Range(Cells(RSMin, 1), Cells(RSMax, 256))
                .FormatConditions.Add Type:=xlExpression, Formula1:=»=1″
                .FormatConditions(1).Interior.Color = 10079487 ‘Index = 40
            End With
        ‘———цвет активной ячейки—————
            With Range(Cells(RSMin, CSMin), Cells(RSMax, CSMax))
                .FormatConditions.Delete
                .FormatConditions.Add Type:=xlExpression, Formula1:=»=1″
                .FormatConditions(1).Interior.Color = 14942123 ‘Index=34 (14936512)
            End With
        ‘———цвет шрифта активной ячейки———
            With Selection.Font
                .ThemeColor = xlThemeColorDark1
                .TintAndShade = 0
            End With

                    Else
        End If
    End Sub

    [/vba]

    Спасибо.


    Vadym Gorokh

     

    Ответить

    igrtsk

    Дата: Пятница, 07.02.2020, 14:19 |
    Сообщение № 2

    Группа: Проверенные

    Ранг: Обитатель

    Сообщений: 307


    Репутация:

    50

    ±

    Замечаний:
    0% ±


    Excel 2016


    Инструктор по применению лосей в кавалерийских частях РККА

     

    Ответить

    grh1

    Дата: Пятница, 07.02.2020, 14:33 |
    Сообщение № 3

    Группа: Проверенные

    Ранг: Форумчанин

    Сообщений: 200


    Репутация:

    0

    ±

    Замечаний:
    40% ±


    2019

    ИМХО «перекрашивание» ячеек не всегда полезно

    согласен с Вами, но в моем случае необходимо, т.к. человек с неправильным цветоощущением или как там это называется, не совсем дальтоник, но все цвета приглушены.

    Здесь готовые макросы и в различных вариантах.

    всё это я конечно просматривал ранее, но я спросил о коде возврата ШРИФТА в исходное положение.


    Vadym Gorokh

    Сообщение отредактировал grh1Пятница, 07.02.2020, 14:41

     

    Ответить

    Nic70y

    Дата: Пятница, 07.02.2020, 14:48 |
    Сообщение № 4

    Группа: Друзья

    Ранг: Экселист

    Сообщений: 8132


    Репутация:

    1998

    ±

    Замечаний:
    0% ±


    Excel 2010

    решение с помощью УФ (ну, а че?)

    Код

    =ИЛИ(СТРОКА()=ЯЧЕЙКА(«row»);СТОЛБЕЦ()=ЯЧЕЙКА(«col»))

    и вместо F9
    [vba]

    Код

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Target.Row < 21 And Target.Column < 8 Then Calculate
    End Sub

    [/vba]

    К сообщению приложен файл:

    0114414.xlsm
    (14.5 Kb)


    ЮMoney 41001841029809

     

    Ответить

    grh1

    Дата: Пятница, 07.02.2020, 14:51 |
    Сообщение № 5

    Группа: Проверенные

    Ранг: Форумчанин

    Сообщений: 200


    Репутация:

    0

    ±

    Замечаний:
    40% ±


    2019

    решение с помощью УФ (ну, а че?)

    спасибо, но мне нужно без УФ


    Vadym Gorokh

     

    Ответить

    boa

    Дата: Пятница, 07.02.2020, 17:40 |
    Сообщение № 6

    Группа: Друзья

    Ранг: Ветеран

    Сообщений: 543


    Репутация:

    166

    ±

    Замечаний:
    0% ±


    2013, 365

    Здравствуйте, grh1,

    спасибо, но мне нужно без УФ

    Зачем же вы его в макросе используете?

    хотя… если вы используете комбинацию

    For Each Target In Selection.Cells

    , то вопрос отпадает сам собой :(

    вот накидал на быструю руку. Добавьте новый листик(можно его даже скрытым сделать) и сохраняйте на него изменяемые заливки, а потом возвращайте их на место.
    [vba]

    Код

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Static OLdTarget As Range
    Dim oRng As Range
    Const MyColor = vbYellow  ‘цвет выделенного диапазона, _
      можете добавить переменные для шрифта или еще что-то и соответственно их разместить в процедуре

            If OLdTarget Is Nothing Then Set OLdTarget = Target
        If Target.Address <> OLdTarget.Address Then
            For Each oRng In Worksheets(«Sheet1»).Range(OLdTarget.Address)
              If Me.Range(oRng.Address).Interior.Color = MyColor Then _
                  Me.Range(oRng.Address).Interior.Color = oRng.Interior.Color
              oRng.Interior.Color = xlNone
            Next
        End If
        For Each oRng In Target
            Worksheets(«Sheet1»).Range(oRng.Address).Interior.Color = oRng.Interior.Color
            oRng.Interior.Color = MyColor
        Next
        Set OLdTarget = Target
    End Sub

    [/vba]

    К сообщению приложен файл:

    2761472.xlsm
    (25.9 Kb)


     

    Ответить

    grh1

    Дата: Пятница, 07.02.2020, 19:12 |
    Сообщение № 7

    Группа: Проверенные

    Ранг: Форумчанин

    Сообщений: 200


    Репутация:

    0

    ±

    Замечаний:
    40% ±


    2019

    и сохраняйте на него изменяемые заливки, а потом возвращайте их на место.

    это я не понял — какие заливки и куда сохранять.
    У бухгалтера большущая таблица, вправо растянулась на хрен знает сколько и ему нужно просто выделить активную строку, чтобы она подсветилась ярким цветом и еще ярче должна быть активная ячейка. Яркая ячейка получается только темного цвета (для него, он дальтоник), поэтому шрифт этой активной ячейки меняем на белый.
    А когда бухгалтер уйдет на другую ячейку, то эта ячейка (которая была секунду назад активной), должна возвратить цвет исходника.
    Бухгалтер никуда ничего не будет добавлять, ему нужна просто яркая подсветка. С подсветкой цветом активной строки и подсветкой активной ячейки вопрос решен кодом в моем первом посту, а вот как вернуть изначальный шрифт — вопрос. Может я что не допонял — извините.


    Vadym Gorokh

     

    Ответить

    RAN

    Дата: Пятница, 07.02.2020, 19:57 |
    Сообщение № 8

    Группа: Друзья

    Ранг: Экселист

    Сообщений: 5645

    Ваш взвой о помощи без файла — ни о чем
    Скорее всего подойдет
    [vba]

    Код

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
         Cells.Font.ColorIndex = xlAutomatic
    …далее по тексту

    [/vba]
    Но, вполне может быть, что и не подойдет.


    Быть или не быть, вот в чем загвоздка!

    Сообщение отредактировал RANПятница, 07.02.2020, 20:01

     

    Ответить

    boa

    Дата: Пятница, 07.02.2020, 20:03 |
    Сообщение № 9

    Группа: Друзья

    Ранг: Ветеран

    Сообщений: 543


    Репутация:

    166

    ±

    Замечаний:
    0% ±


    2013, 365

    grh1,
    Приложите образец файла, что бы понимать, что в нем есть и что можно использовать.
    а в вашем случае — одно УФ создаете, другое удаляете вот и все.


     

    Ответить

    grh1

    Дата: Пятница, 07.02.2020, 21:07 |
    Сообщение № 10

    Группа: Проверенные

    Ранг: Форумчанин

    Сообщений: 200


    Репутация:

    0

    ±

    Замечаний:
    40% ±


    2019

    Выкладываю файл с координатным выделением…
    Считаю это лучший вариант во всем интернете.
    Парень видать талант – min строк кода и координатное выделение готово, причем не убивает имеющееся на листе сделанное ранее форматирование.
    Все просмотренные и опробованные мной аналоги – код в разы больше, который порой прописывается и в модуле листа и в модуле книги и просто в module, а у моего бухгалтера и так файл забит макросами по самые яйца.
    Написал этот код, к сожалению, ГОСТЬ планеты (ник dl), поэтому написать ему нет возможности. Хотя… скорее всего основной код взят с надстройки RowLiner, но как талантливо причёсан!! Из кодовой портянки, сделана конфетка.
    Ещё бы одну строчечку кода к моему безграмотному блоку добавить и было бы счастье.

    К сообщению приложен файл:

    2250041.xlsb
    (73.9 Kb)


    Vadym Gorokh

     

    Ответить

    RAN

    Дата: Суббота, 08.02.2020, 06:25 |
    Сообщение № 11

    Группа: Друзья

    Ранг: Экселист

    Сообщений: 5645

    «Всё смешалось в доме Облонских» :(

    Считаю это лучший вариант во всем интернете.

    однако,

    спасибо, но мне нужно без УФ

    и

    как сделать, чтобы шрифт возвращался в изначальное состояние

    Ваш «самый лучший код» практически один в один с кодом, предложенным boa в #6, в котором есть и строка, отвечающая за цвет шрифта.
    Эти коды используют УФ, и совершенно не затрагивают формат ячеек, поэтому возвращать в изначальное состояние, собственно, нечего.
    [vba]

    Код

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        ActiveSheet.Cells.FormatConditions.Delete
        If Target.Cells.Count <= 2500 Then
            If Target.Rows.Count < 11 Then
                With Target.EntireRow
                    .FormatConditions.Add Type:=xlExpression, Formula1:=»=1″
                    .FormatConditions(1).Interior.Color = 10079487    ‘цвет мой — персик, у него индекс=40 тот же персик
                End With
            End If
            With Target
                .FormatConditions.Delete
                .FormatConditions.Add Type:=xlExpression, Formula1:=»=1″
                .FormatConditions(1).Interior.Color = 11352099    ‘Interior.Color — цвет заливки
                .FormatConditions(1).Font.Color = 255    ‘Font.Color — цвет шрифта
            End With
        Else
        End If
    End Sub

    [/vba]


    Быть или не быть, вот в чем загвоздка!

     

    Ответить

    boa

    Дата: Суббота, 08.02.2020, 09:32 |
    Сообщение № 12

    Группа: Друзья

    Ранг: Ветеран

    Сообщений: 543


    Репутация:

    166

    ±

    Замечаний:
    0% ±


    2013, 365

    В продолжение разговора…
    Ну уж если разговор об УФ, то я бы не был так категоричен

    ActiveSheet.Cells.FormatConditions.Delete

    лучше удалять выборочно. а то вдруг у бухгалтера уже есть УФ, а вы ему все «по самые яйца» вырежете
    [vba]

    Код

        For iFC = Cells.FormatConditions.Count To 1 Step -1
          With Cells.FormatConditions(iFC)
            If .Type = 2 Then If .Formula1 = «=1» Then .Delete
          End With
        Next

    [/vba]


     

    Ответить

    grh1

    Дата: Суббота, 08.02.2020, 11:29 |
    Сообщение № 13

    Группа: Проверенные

    Ранг: Форумчанин

    Сообщений: 200


    Репутация:

    0

    ±

    Замечаний:
    40% ±


    2019

    RAN, спасибо большое.
    Вы действительно специалист высокого уровня — убеждался не раз, за что Вас и уважают.
    Но не в обиду никому, не удержался и написал небольшой пересказ этой темы.
    Подчеркну — написано простым ОБЫВАТЕЛЕМ-ПОЛЬЗОВАТЕЛЕМ, (можно даже сказать блондинкой), который в кодах понимает как баран в математике.
    —————————————————————————————————————————————————————-


    Vadym Gorokh

     

    Ответить

    grh1

    Дата: Суббота, 08.02.2020, 11:30 |
    Сообщение № 14

    Группа: Проверенные

    Ранг: Форумчанин

    Сообщений: 200


    Репутация:

    0

    ±

    Замечаний:
    40% ±


    2019

    Прям какой-то СОВЕТСКИЙ триллер получился.
    В главных ролях:
    — пассажир
    — специалист 1
    — специалист 2
    — главный специалист

    пассажир: «…Мне необходимо быстро и комфортно доехать из пункта А в пункт Б расстоянием 1200км и для этого я достал мерседес.
    Когда я буду ехать, то в больших населенных пунктах меня должны мои люди узнавать по желтому капоту. Проезд одного крупного населенного пункта занимает 25км, таких населенных пунктов всего 3 штуки, остальной путь – по трассе ВНЕ населенных пунктов. И т.к. меня очень сильно раздражает желтый цвет, прошу специалистов помочь быстро перекрашивать желтый капот на оригинал, при этом капот я корявенко, но уже выкрасил в желтый цвет.

    специалист 1:а зачем вам мерседес, у нас есть запорожец (ну а чё?) – откапитален, оттюнингован, с новой резиной и что самое главное желтый капот правильно покрашен и перекрашивается в исходный цвет простым нажатием 12-ти кнопок?!

    пассажир: (коротко и корректно со словом спасибо) спасибо, но мне нужно без запорожца.

    специалист 2:ну не хотите запорожец, могу предложит свою ладу Калина – вот на быструю руку накидал инструкцию – чтобы перекрасить ваш капот, сначала нужно создать 148 разновидностей цветов, потом к моей ладе Калина надо чтобы рядом с вами ехала еще одна какая-нибудь машина (например жигули 1985 года выпуска) и сохраняла все ваши 148 цветов и при вашем запросе возвращала вам нужный цвет. Т.к. эти жигули старенькие и чтобы они не бросались в глаза, то можно сделать их невидимыми для этого нужно покрасить специальной невидимой краской.

    пассажир: это я не понял — какие 148 цветов, куда сохранять и какие жигули 1985 года?
    (пассажир терпеливо еще раз объясняет, что ему все-таки нужно) Давайте еще раз объясню для чего мне нужно перекрашивать желтый капот – дорога длиннющая, растянулась хрен знает на сколько в даль и ехать с раздражающим желтым капотом всю эту дорогу просто пытка и чревата авариями. Мне нужно просто быстрая перекраска желтого капота в основной цвет автомобиля. (пассажир дабы не обидеть человека корректно просит извинения за своё непонимание) Может я что не допонял — извините.

    главный специалист и специалист 2:да что вы кочевряжитесь, чем наша лада Калина хуже вашего мерседеса – давайте показывайте свой мерседес, что бы понимать, что в нем есть и что можно использовать.

    пассажир: (пассажир подгоняет мерседес, говорит, что это лучший вариант во всем сегменте авторынка, указывает, где его произвели и конкретные плюсы для простого ОБЫВАТЕЛЯ и еще раз просит, что ему нужно – всего лишь перекраска капота в исходный цвет)

    главный специалист: «Всё смешалось в доме Облонских»
    цитирует пассажира:

    Цитата

    «это лучший вариант во всем сегменте авторынка»

    однако,
    цитирует пассажира:

    Цитата

    «спасибо, но мне нужно без запорожца»

    и,
    цитирует пассажира:

    Цитата

    «нужна всего лишь перекраска капота в исходный цвет»

    Ваш «самый лучший вариант на авторынке» практически один в один с нашей ладой Калиной, предложенной специалистом 2 ранее, в котором уже есть возможность перекрасить ваш капот.

    Но в принципе в вашем мерседесе действительно надо всего лишь перекрасить капот, то вот вам мой вариант — сделайте глубокий вдох и на выдохе капот будет перекрашен – всё!
    (занавес)


    Vadym Gorokh

     

    Ответить

    RAN

    Дата: Суббота, 08.02.2020, 22:17 |
    Сообщение № 15

    Группа: Друзья

    Ранг: Экселист

    Сообщений: 5645

    еще раз просит, что ему нужно – всего лишь перекраска капота в исходный цвет

    Сравнение интересное.
    Вот только вопрос, какого цвета капот был изначально, и в каком месте вы его покрасили?
    Я вижу, что вы его просто простынкой прикрыли. А капот как был серобуромалиновый, так и остался.


    Быть или не быть, вот в чем загвоздка!

     

    Ответить

    grh1

    Дата: Воскресенье, 09.02.2020, 10:04 |
    Сообщение № 16

    Группа: Проверенные

    Ранг: Форумчанин

    Сообщений: 200


    Репутация:

    0

    ±

    Замечаний:
    40% ±


    2019

    еще раз просит, что ему нужно – всего лишь перекраска капота в исходный цвет

    RAN, Вы находите, что в этой строке кто-то, что-то, с чем-то сравнивает???

    Насчет капота

    капот я корявенко, но уже выкрасил в желтый цвет

    Ещё бы одну строчечку кода к моему безграмотному блоку добавить и было бы счастье.

    Слово «корявенко» здесь — аллегория, т.е. и имелось ввиду, что прикрыто простынкой; А если открыть капот (зайти в макрос присланного пассажиром файла), то там прямо и написано — «скорее всего не правильно». (пассажир не знал и не понимал как сделать, только интуитивно догадывался, что нужна одна строчка… которую Вы с легкостью и добавили, удалив неправильный блок пассажира).
    Так что всё верно.

    RAN, спасибо еще раз — закрываем тему.


    Vadym Gorokh

    Сообщение отредактировал grh1Воскресенье, 09.02.2020, 10:40

     

    Ответить

    micholap_denis

    Дата: Среда, 16.09.2020, 10:00 |
    Сообщение № 17

    Группа: Проверенные

    Ранг: Обитатель

    Сообщений: 341


    Репутация:

    0

    ±

    Замечаний:
    60% ±


    Excel 2013

    boa, подскажитье пожалуйста а куда в макрос это вставить что бы не удалялись существующие УФ
    [vba]

    Код

    For iFC = Cells.FormatConditions.Count To 1 Step -1
        With Cells.FormatConditions(iFC)
            If .Type = 2 Then If .Formula1 = «=1» Then .Delete
        End With
        Next

    [/vba]

     

    Ответить

    micholap_denis

    Дата: Среда, 16.09.2020, 10:01 |
    Сообщение № 18

    Группа: Проверенные

    Ранг: Обитатель

    Сообщений: 341


    Репутация:

    0

    ±

    Замечаний:
    60% ±


    Excel 2013

    после какой строчки либо вместо каких?

     

    Ответить

    boa

    Дата: Четверг, 17.09.2020, 00:14 |
    Сообщение № 19

    Группа: Друзья

    Ранг: Ветеран

    Сообщений: 543


    Репутация:

    166

    ±

    Замечаний:
    0% ±


    2013, 365

    micholap_denis,
    Здравствуйте,
    я в посте процитировал строку, которую надо заменить в предыдущем сообщении RANa
    deal


     

    Ответить

    В 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»Конец, еслиСледующая ячейка

    Вы поможете развитию сайта, поделившись страницей с друзьями

    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.

    vba cell 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:

    vba vbcolor

    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!

    automacro

    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:

    excel vba font 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:

    cell formatting menu excel

    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

    Понравилась статья? Поделить с друзьями:
  • Excel макросы замена букв
  • Excel макросы текущая ячейка
  • Excel макросы текст по столбцам
  • Excel макросы другого листа
  • Excel макросы текст в число