Макрос в excel условие цвета

1 / 1 / 0

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

Сообщений: 52

1

Добавить текст ячейки в зависимости от цвета ячейки

12.02.2017, 12:30. Показов 8217. Ответов 16


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

Здравствуйте. Я не могу разобраться в написании формулы или макроса.
В определенном диапазоне ячеек требуется: в зависимости от цвета ячейки добавить текст с названием цвета в ячейку справа.
Количество цветов ячеек ограниченно.
То есть, если ячейка желтого цвета, то в ячейке справа должен появиться текст «желтый», если красного -«красный».

Нужен код для VBA excel.
HELP ME!!!



0



aequit

223 / 134 / 45

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

Сообщений: 283

Записей в блоге: 1

12.02.2017, 14:22

2

Visual Basic
1
if Range("A1").Interior.Color = 65535 Then Range("B1").Value = "Желтый"

Файл нужно прикладывать со своими наработками, что не получилось…
Почему именно VBA? Условным форматированием может удобнее было-бы…



0



Xiaohny

1 / 1 / 0

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

Сообщений: 52

13.02.2017, 11:46

 [ТС]

3

в ячейке D9 находиться пример цвета.

Visual Basic
1
2
3
4
5
Public Function examV(DataRange As Range)
     
     If DataRange.Interior.Color = Range("D9").Interior.Color Then Range("B1").Value = "желтый"
     
 End Function

Добавлено через 17 часов 20 минут

Цитата
Сообщение от aequit
Посмотреть сообщение

Visual Basic
1
if Range("A1").Interior.Color = 65535 Then Range("B1").Value = "Желтый"

Файл нужно прикладывать со своими наработками, что не получилось…
Почему именно VBA? Условным форматированием может удобнее было-бы…

Разве можно задать в словном форматировании условие определения цвета?
Формула, прикрепленная выше не работает, что может быть неправильным?



0



223 / 134 / 45

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

Сообщений: 283

Записей в блоге: 1

13.02.2017, 14:40

4

Да, условным форматированием данную задачу нельзя сделать (или я не знаю как)…

Вариант условия из первого поста «если ячейка желтого цвета, то в ячейке справа должен появиться текст «желтый», если красного -«красный» можно реализовать циклом по ячейкам из диапазона «справа» и в зависимости от результата в ячейках «слева» писать текст. Для этого в коде нужно запрограммировать соответствие 65535 = «Желтый» и т.д. Например, используя Select Case.
Прикладываю файл, там номера и названия цветов, может пригодится. Поэкспериментировал с цветами, формулой, как Вы хотели, не получается.
Больше мыслей нет.



0



Xiaohny

1 / 1 / 0

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

Сообщений: 52

13.02.2017, 16:33

 [ТС]

5

Изменил формулу, в результате в ячейке результат «#ЗНАЧ!»
Подозреваю, что неправильно указываю тип переменной, т.к. при использовании формулы цвета из ячеек D9 и D10, то результат #ЗНАЧ!, иначе пустая ячейка.
Что может быть не так в моей формуле?

Visual Basic
1
2
3
4
5
6
Public Function examV1(DataRange As Range, DataRange2 As Range) As String
 
     If DataRange.Interior.Color = Range("D9").Interior.Color Then DataRange2.Value = "желтый"
     If DataRange.Interior.Color = Range("D10").Interior.Color Then DataRange2.Value = "красный"
     
 End Function

Вложения

Тип файла: xlsx color-vba-2017.xlsm.xlsx (9.4 Кб, 14 просмотров)



0



es geht mir gut

11264 / 4746 / 1183

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

Сообщений: 11,437

13.02.2017, 16:38

6

Цитата
Сообщение от Xiaohny
Посмотреть сообщение

Что может быть не так в моей формуле?

А функции-то и нет.



0



1 / 1 / 0

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

Сообщений: 52

13.02.2017, 16:40

 [ТС]

7

Прикрепить файл с макросом не могу, пардоньте



0



3827 / 2254 / 751

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

Сообщений: 5,930

13.02.2017, 16:51

8

заархивируйте тогда прицепится.



0



1 / 1 / 0

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

Сообщений: 52

13.02.2017, 16:54

 [ТС]

9

Готово.
Функция examV1



0



Vlad999

3827 / 2254 / 751

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

Сообщений: 5,930

13.02.2017, 16:58

10

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

Решение

для начала так. файл не смотрел

Visual Basic
1
2
3
4
5
6
Public Function examV1(DataRange As Range) As String
 
     If DataRange.Interior.Color = Range("D9").Interior.Color Then examV1 = "æåëòûé"
     If DataRange.Interior.Color = Range("D10").Interior.Color Then examV1 = "êðàñíûé"
     
 End Function



2



1 / 1 / 0

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

Сообщений: 52

13.02.2017, 17:19

 [ТС]

11

Работает, спасибо!



0



aequit

223 / 134 / 45

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

Сообщений: 283

Записей в блоге: 1

13.02.2017, 17:20

12

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

Visual Basic
1
2
3
4
5
6
Public Function examV1(DataRange As Range) As String
   Select Case DataRange.Interior.Color
     Case Is = 65535: examV1 = "Желтый"
     Case Is = 255: examV1 = "Красный"
   End Select
 End Function



0



Xiaohny

1 / 1 / 0

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

Сообщений: 52

14.02.2017, 15:21

 [ТС]

13

Функция работает только при вводе вручную, но при автозаполнении результатов не дает.
В чем может быть проблема?

Visual Basic
1
2
3
4
5
6
Public Function examV2(DataRange As Range, DataRange1 As Range)
 
     If DataRange = "желтый" Then DataRange1.Interior.Color = Range("D9").Interior.Color
     If DataRange = "красный" Then DataRange1.Interior.Color = Range("D10").Interior.Color
     
 End Function



0



Vlad999

3827 / 2254 / 751

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

Сообщений: 5,930

14.02.2017, 16:00

14

добавьте второй строкой

Visual Basic
1
Application.Volatile



0



1 / 1 / 0

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

Сообщений: 52

14.02.2017, 16:27

 [ТС]

15

Не работает



0



3827 / 2254 / 751

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

Сообщений: 5,930

14.02.2017, 17:52

16

вы опять не правильно пишите ф-цию. у вас в ф-ции должна быть строка examV2=….., а у вас её нет.



0



1062 / 506 / 137

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

Сообщений: 1,451

14.02.2017, 19:34

17

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

Решение

Xiaohny, посмотрите файл.Я когда-то занимался подобной проблемой.Там я привел пример как вам надо используя функции ClosestRGBConstantColorName() и CellColor(),объединив их.
P.S. Названия цветов и их значения вбиваются в соответствующие массивы



2



IT_Exp

Эксперт

87844 / 49110 / 22898

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

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

14.02.2017, 19:34

Помогаю со студенческими работами здесь

Изменение цвета строки(ячейки) в зависимости от свойств реквизита спрв
Как в зависимости от свойств реквизита справочника,документа,ячейки таблицы значений можно…

Изменение цвета ячейки в таблице Excel в зависимости от сегодняшней даты
День добрый!! Подскажите пожалуйста, как настроить таблицу Эксель, что бы менялся цвет ячейки в…

Как задать значение для ячейки в зависимости от значения другой ячейки
Здравствуйте! Подскажите, как задать значение для ячейки в зависимости от значения другой ячейки….

Изменения формата ячейки Excel средствами VBA в зависимости от значения другой ячейки
Здравствуйте.
Столкнулся с проблемой. Необходимо на листе Excel Залить, предположим, ячейку "C4"…

Перенесение результатов ячейки в ячейку на другой лист, в зависимости от значения исходной ячейки
Добрый день, — прошу помощи экспертов! Есть такая таблица (в вложении).
Суть вопроса такова:
Есть…

Изменения формата ячейки в зависимости от значения другой ячейки
Здравствуйте, помогите решить такой вопрос.

Задача, которая в принципе решается средствами…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

17

How to SUM cells with certain background colors.

Sections:

Prepare the Data

SUMIF Cells with Certain Colors

SUMIFS Cells with Certain Colors

Notes

Prepare the Data

To get the data ready, we need to put the cell colors into an adjacent column so that we can use the SUM functions on them. To do this, we use a macro that will output the numerical representation of each color into Excel.

Here is the macro:

Sub ListColors()

For Each c In Selection

    c.Offset(0, 1).Value = c.Interior.Color

Next c

End Sub

Install the macro like this: Hit Alt + F11 to go to the VBA Window and go to InsertModule on the menu. In the window that opens, paste the above macro.

70728ae1ea2e50176864221f73dcf381.png

Next, go to the data table and insert a new column directly to the right of the old column.

ace757ad4fc07c3c27c96ff22a36d131.png

Next, select all of the cells that have background colors and run the macro.

24a9458fe7b9319e190e92793e7d3ccb.png

Hit Alt F8 to get to the macro window, select the macro, and click the Run button.

81c7888dd4199aeed7dee746b3ea803d.png

Now, you should see the new column filled with numbers that are unique to each color.

7e8308d17e287f33c392c1daa7763c54.png

Your data is now setup for the SUM functions.

SUMIF Cells with Certain Colors

(make sure to setup your data like in the previous section)

Here is a sample SUMIF that you can now use to sum only the light-grey cells.

=SUMIF(C2:C9,C6,E2:E9)

You could also hard-code the number in like this:

=SUMIF(C2:C9,13750737,E2:E9)

b01f0f72c8ab92634351b131648caa6e.png

SUMIFS Cells with Certain Colors

(make sure to setup your data like in the first section of this tutorial)

Here is a SUMIFS function (available in Excel 2007 and later) that will sum all cells that are not light-green and do not begin with «gsc».

=SUMIFS(E2:E9,C2:C9,"<>8122747",A2:A9,"<>gsc*")

ee11d3ccd81ca9108f3787ed6e2a075a.png

Notes

The most important thing is to prepare the data correctly. The numbers generated by the macro are what allow you to include or exclude values based on a cell’s color.

Make sure that the column where you put the numbers for the colors is directly to the right of the column with the colors; the macro will automatically input data in the first column to the right of the cells that you select.

You can hide the Color Value column once you finish making your formulas; it will still work and then it won’t mess-up the design of your table.

Download the attached project file so you can see these examples in Excel.

Similar Content on TeachExcel

Formulas Based on Cell Color — SUMIFS, IF, COUNTIF, Etc.

Tutorial:
How to use a SUMIF or SUMIFS function (or any conditional function or formula) on cell ba…

SUMIF — Sum Values Based on Criteria in Excel

Tutorial:
The SUMIF function allows you to sum values based on a single criteria. This function wor…

SUMIFS — Sum Values Based on Multiple Criteria in Excel

Tutorial:
The SUMIFS function allows you to sum values that meet multiple criteria across multiple …

Sum Values that Meet 1 of Multiple Conditions in Excel

Tutorial:
How to sum values that equal one of many potential criteria; this is basically summing wi…

Sum Values that Equal 1 of Many Conditions across Multiple Columns in Excel

Tutorial:
How to Sum values using an OR condition across multiple columns, including using OR with …

Wildcards in Excel

Tutorial:
Wildcards are characters that allow you to make more robust functions, searches, and filt…

Subscribe for Weekly Tutorials

BONUS: subscribe now to download our Top Tutorials Ebook!

Содержание

  1. VBA Excel. Цвет ячейки
  2. Свойство .Interior.Color объекта Range
  3. Заливка ячейки цветом в VBA Excel
  4. Вывод сообщений о числовых значениях цветов
  5. Использование предопределенных констант
  6. Цветовая модель RGB
  7. Свойство .Interior.ColorIndex объекта Range
  8. Свойство Interior.Color (Excel)
  9. Синтаксис
  10. Примечания
  11. Пример
  12. Поддержка и обратная связь
  13. Цвет ячейки в Excel
  14. Макросы для изменения формата ячеек в таблице Excel
  15. VBA-макрос: заливка, шрифт, линии границ, ширина столбцов и высота строк
  16. Описание VBA-макроса для формата ячеек таблицы Excel
  17. Модификация исходного кода макроса для форматирования

VBA Excel. Цвет ячейки

Заливка ячейки цветом в VBA Excel. Фон ячейки. Свойства .Interior.Color и .Interior.ColorIndex. Цветовая модель RGB. Стандартная палитра из 56 цветов.

  1. Свойство .Interior.Color объекта Range
    • Заливка ячейки цветом в VBA Excel
    • Вывод сообщений о числовых значениях цветов
    • Использование предопределенных констант
    • Цветовая модель RGB
  2. Свойство .Interior.ColorIndex объекта Range

Свойство .Interior.Color объекта Range

Начиная с Excel 2007 основным способом заливки диапазона или отдельной ячейки цветом (зарисовки, добавления, изменения фона) является использование свойства .Interior.Color объекта Range путем присваивания ему значения цвета в виде десятичного числа от 0 до 16777215 (всего 16777216 цветов).

Заливка ячейки цветом в VBA Excel

Пример кода 1:

Поместите пример кода в свой программный модуль и нажмите кнопку на панели инструментов «Run Sub» или на клавиатуре «F5», курсор должен быть внутри выполняемой программы. На активном листе Excel ячейки и диапазон, выбранные в коде, окрасятся в соответствующие цвета.

Есть один интересный нюанс: если присвоить свойству .Interior.Color отрицательное значение от -16777215 до -1, то цвет будет соответствовать значению, равному сумме максимального значения палитры (16777215) и присвоенного отрицательного значения. Например, заливка всех трех ячеек после выполнения следующего кода будет одинакова:

Проверено в Excel 2016.

Вывод сообщений о числовых значениях цветов

Числовые значения цветов запомнить невозможно, поэтому часто возникает вопрос о том, как узнать числовое значение фона ячейки. Следующий код VBA Excel выводит сообщения о числовых значениях присвоенных ранее цветов.

Пример кода 2:

Вместо вывода сообщений можно присвоить числовые значения цветов переменным, объявив их как Long.

Использование предопределенных констант

В VBA Excel есть предопределенные константы часто используемых цветов для заливки ячеек:

Предопределенная константа Наименование цвета
vbBlack Черный
vbBlue Голубой
vbCyan Бирюзовый
vbGreen Зеленый
vbMagenta Пурпурный
vbRed Красный
vbWhite Белый
vbYellow Желтый

Присваивается цвет ячейке предопределенной константой в VBA Excel точно так же, как и числовым значением:

Пример кода 3:

Цветовая модель RGB

Цветовая система RGB представляет собой комбинацию различных по интенсивности основных трех цветов: красного, зеленого и синего. Они могут принимать значения от 0 до 255. Если все значения равны 0 — это черный цвет, если все значения равны 255 — это белый цвет.

Выбрать цвет и узнать его значения RGB можно с помощью палитры Excel:

Открывается в новом окне Палитра Excel

Чтобы можно было присвоить ячейке или диапазону цвет с помощью значений RGB, их необходимо перевести в десятичное число, обозначающее цвет. Для этого существует функция VBA Excel, которая так и называется — RGB.

Пример кода 4:

Свойство .Interior.ColorIndex объекта Range

До появления Excel 2007 существовала только ограниченная палитра для заливки ячеек фоном, состоявшая из 56 цветов, которая сохранилась и в настоящее время. Каждому цвету в этой палитре присвоен индекс от 1 до 56. Присвоить цвет ячейке по индексу или вывести сообщение о нем можно с помощью свойства .Interior.ColorIndex:

Пример кода 5:

Просмотреть ограниченную палитру для заливки ячеек фоном можно, запустив в VBA Excel простейший макрос:

Источник

Свойство Interior.Color (Excel)

Возвращает или задает основной цвет объекта, как показано в таблице в разделе примечаний. Используйте функцию RGB для создания значения цвета. Для чтения и записи, Variant.

Синтаксис

expression. Цвет

Выражение Выражение, возвращающее объект Interior .

Примечания

Object Цвет
Border Цвет границы.
Borders Цвет всех четырех границ диапазона. Если они не совпадают по цвету, функция Color возвращает значение 0 (ноль).
Font Цвет шрифта.
Interior Цвет заливки ячейки или цвет заливки объекта рисунка.
Вкладка Цвет вкладки.

Пример

В этом примере задается цвет меток галочки на оси значений на диаграмме Chart1.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Цвет ячейки в Excel

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

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

Начнем с простого. На главной панели инструментов ленты находится панель Формата Ячеек:

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

Теперь зададим формат ячейки пользуясь контекстным меню, для чего кликнем правой кнопкой мыши на ячейке и в открывшемся списке выберем «Формат Ячеек»:

На вкладке «Заливка» можно выбрать цвет фона и узор.

Рассмотрим несколько иную ситуацию. Допустим вы хотите скопировать цвет ячейки (и формат) с существующей и применить к своим ячейкам. Воспользуемся кнопкой на главной панели «Формат по образцу» («метелочка»):

Таким образом, для того, чтобы скопировать формат необходимо выделить интересующую нас ячейку, нажать на «метелочку» и кликнуть по ячейке, формат которой мы хотим задать.

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

Задать цвет ячейке (A1 окрашивается в Желтый):

Скопировать формат ячейки (формат A1 копируется на A3):

Теперь комбинируя формат с операторами условия можно написать вычисления (например, суммирование) по условию цвета.

Будем благодарны, если Вы нажмете +1 и/или Мне нравится внизу данной статьи или поделитесь с друзьями с помощью кнопок ниже.

Источник

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

Источник

У Вас лишняя буква r прицепилась :)

.Interior.Color = vbRed 
.Interior.Color = RGB(255, 0, 0)
.Interior.Color = 255

Работа с объектами листа медленная. Если ячеек много и заливать нужно не целым диапазоном, можно обработать в памяти и залить ячейки одной командой.

     Sub PaintCells()
            Dim r1 As Range, r2 As Range
            Dim c As Range
                Set r1 = Range("A1:C10") ' диапазон в переменную
                r1.Interior.Pattern = xlNone ' убираем заливку
'               r1.Interior.ColorIndex = 0 ' или так 

                For Each c In r1 ' цикл по ячейкам диапазона
                    If c.Value = 25 Then ' если условие выполняется
                        If r2 Is Nothing Then '  диапазон еще пустой
                            Set r2 = c ' формируем диапазон
                        Else
                            Set r2 = Union(r2, c) ' пополняем диапазон
                        End If
                    End If
                Next c

                If Not r2 Is Nothing Then r2.Interior.Color = 255 ' заливаем
                Set r1 = Nothing: Set r2 = Nothing ' освобождаем память
            End Sub

Залить строки по условию в ячейке:

For i = 1 To r1.Rows.Count ' цикл по строкам диапазона
    If r1(i, 1).Value = 25 Then ' если левая ячейка диапазона...
        If r2 Is Nothing Then '  диапазон еще пустой
            Set r2 = Range(Cells(i, 1), Cells(i, 3)) ' формируем диапазон
        Else
            Set r2 = Union(r2, Range(Cells(i, 1), Cells(i, 3))) ' пополняем диапазон
        End If
    End If
Next i

Понравилась статья? Поделить с друзьями:
  • Макрос в excel умножить на
  • Макрос для excel заполнение ячейки
  • Макрос в excel удаление всего
  • Макрос для excel замена ячеек
  • Макрос для excel для поиска одинаковых значений