Заливка ячейки цветом в VBA Excel. Фон ячейки. Свойства .Interior.Color и .Interior.ColorIndex. Цветовая модель RGB. Стандартная палитра. Очистка фона ячейки.
Свойство .Interior.Color объекта Range
Начиная с Excel 2007 основным способом заливки диапазона или отдельной ячейки цветом (зарисовки, добавления, изменения фона) является использование свойства .Interior.Color объекта Range путем присваивания ему значения цвета в виде десятичного числа от 0 до 16777215 (всего 16777216 цветов).
Заливка ячейки цветом в VBA Excel
Пример кода 1:
Sub ColorTest1() Range(«A1»).Interior.Color = 31569 Range(«A4:D8»).Interior.Color = 4569325 Range(«C12:D17»).Cells(4).Interior.Color = 568569 Cells(3, 6).Interior.Color = 12659 End Sub |
Поместите пример кода в свой программный модуль и нажмите кнопку на панели инструментов «Run Sub» или на клавиатуре «F5», курсор должен быть внутри выполняемой программы. На активном листе Excel ячейки и диапазон, выбранные в коде, окрасятся в соответствующие цвета.
Есть один интересный нюанс: если присвоить свойству .Interior.Color отрицательное значение от -16777215 до -1, то цвет будет соответствовать значению, равному сумме максимального значения палитры (16777215) и присвоенного отрицательного значения. Например, заливка всех трех ячеек после выполнения следующего кода будет одинакова:
Sub ColorTest11() Cells(1, 1).Interior.Color = —12207890 Cells(2, 1).Interior.Color = 16777215 + (—12207890) Cells(3, 1).Interior.Color = 4569325 End Sub |
Проверено в Excel 2016.
Вывод сообщений о числовых значениях цветов
Числовые значения цветов запомнить невозможно, поэтому часто возникает вопрос о том, как узнать числовое значение фона ячейки. Следующий код VBA Excel выводит сообщения о числовых значениях присвоенных ранее цветов.
Пример кода 2:
Sub ColorTest2() MsgBox Range(«A1»).Interior.Color MsgBox Range(«A4:D8»).Interior.Color MsgBox Range(«C12:D17»).Cells(4).Interior.Color MsgBox Cells(3, 6).Interior.Color End Sub |
Вместо вывода сообщений можно присвоить числовые значения цветов переменным, объявив их как Long.
Использование предопределенных констант
В VBA Excel есть предопределенные константы часто используемых цветов для заливки ячеек:
Предопределенная константа | Наименование цвета |
---|---|
vbBlack | Черный |
vbBlue | Голубой |
vbCyan | Бирюзовый |
vbGreen | Зеленый |
vbMagenta | Пурпурный |
vbRed | Красный |
vbWhite | Белый |
vbYellow | Желтый |
xlNone | Нет заливки |
Присваивается цвет ячейке предопределенной константой в VBA Excel точно так же, как и числовым значением:
Пример кода 3:
Range(«A1»).Interior.Color = vbGreen |
Цветовая модель RGB
Цветовая система RGB представляет собой комбинацию различных по интенсивности основных трех цветов: красного, зеленого и синего. Они могут принимать значения от 0 до 255. Если все значения равны 0 — это черный цвет, если все значения равны 255 — это белый цвет.
Выбрать цвет и узнать его значения RGB можно с помощью палитры Excel:
Палитра Excel
Чтобы можно было присвоить ячейке или диапазону цвет с помощью значений RGB, их необходимо перевести в десятичное число, обозначающее цвет. Для этого существует функция VBA Excel, которая так и называется — RGB.
Пример кода 4:
Range(«A1»).Interior.Color = RGB(100, 150, 200) |
Список стандартных цветов с RGB-кодами смотрите в статье: HTML. Коды и названия цветов.
Очистка ячейки (диапазона) от заливки
Для очистки ячейки (диапазона) от заливки используется константа xlNone
:
Range(«A1»).Interior.Color = xlNone |
Свойство .Interior.ColorIndex объекта Range
До появления Excel 2007 существовала только ограниченная палитра для заливки ячеек фоном, состоявшая из 56 цветов, которая сохранилась и в настоящее время. Каждому цвету в этой палитре присвоен индекс от 1 до 56. Присвоить цвет ячейке по индексу или вывести сообщение о нем можно с помощью свойства .Interior.ColorIndex:
Пример кода 5:
Range(«A1»).Interior.ColorIndex = 8 MsgBox Range(«A1»).Interior.ColorIndex |
Просмотреть ограниченную палитру для заливки ячеек фоном можно, запустив в VBA Excel простейший макрос:
Пример кода 6:
Sub ColorIndex() Dim i As Byte For i = 1 To 56 Cells(i, 1).Interior.ColorIndex = i Next End Sub |
Номера строк активного листа от 1 до 56 будут соответствовать индексу цвета, а ячейка в первом столбце будет залита соответствующим индексу фоном.
Подробнее о стандартной палитре Excel смотрите в статье: Стандартная палитра из 56 цветов, а также о том, как добавить узор в ячейку.
alcnwndrlnd Пользователь Сообщений: 44 |
#1 08.12.2015 10:03:45 Всем привет!
Уж больно здесь красиво, жди беды.. |
|
vdovin_sg Пользователь Сообщений: 58 |
А почему бы не воспользоваться условным форматированием? Можно выделить нужный столбец и задать в разделе условное форматирование нужные условия. Сколько необходимо! |
vdovin_sg, хотелось бы макросом как-то автоматизировать процесс, нажатием одной кнопки, так сказать, а условное форматирование каждый раз добавлять. Уж больно здесь красиво, жди беды.. |
|
vdovin_sg Пользователь Сообщений: 58 |
alcnwndrlnd, Ясно, в макросах я не силен, сам только учусь. |
vdovin_sg, вот и я тоже, пока что но все еще впереди Уж больно здесь красиво, жди беды.. |
|
vdovin_sg Пользователь Сообщений: 58 |
#6 08.12.2015 10:29:55 а если попробовать использовать цикл for a=1 to 500
|
||
vdovin_sg, идея хорошая, а что делать с проверкой нескольких значений? в разных else if — ах расписать только если Уж больно здесь красиво, жди беды.. |
|
Kuzmich Пользователь Сообщений: 7998 |
#8 08.12.2015 10:52:25
|
||
k61 Пользователь Сообщений: 2441 |
#9 08.12.2015 10:56:17
|
||
Kuzmich, k61, тааак, спасибо, сейчас поразбираюсь.. в принципе реально вставить вместо «1» и «2» текстовые значения? Уж больно здесь красиво, жди беды.. |
|
Kuzmich Пользователь Сообщений: 7998 |
|
alcnwndrlnd Пользователь Сообщений: 44 |
#12 08.12.2015 11:27:25 Kuzmich, в таком случае, подскажите, пожалуйста, синтаксис. Как-то надо сослаться на текстовое значение? Ох уж этот ВБА, с++ и то легче.. голова уже кругом
Изменено: alcnwndrlnd — 08.12.2015 11:27:44 Уж больно здесь красиво, жди беды.. |
||
Kuzmich Пользователь Сообщений: 7998 |
А что не получается. Строку с «раму» видимо надо посветить другим цветом (6 заменить) |
Kuzmich, да, проблема была именно в этом, макрос просто не выполнялся что ж, всем большое спасибо и огромный «+» в карму! vdovin_sg, k61, Kuzmich Уж больно здесь красиво, жди беды.. |
|
alcnwndrlnd Пользователь Сообщений: 44 |
#15 08.12.2015 11:47:50 Kuzmich, и, наверное, последний вопрос.. Возможно, глупый: как проверить несколько значений и раскрасить одним цветом:
Изменено: alcnwndrlnd — 08.12.2015 11:48:18 Уж больно здесь красиво, жди беды.. |
||
Kuzmich Пользователь Сообщений: 7998 |
#16 08.12.2015 11:51:05
|
||
Kuzmich, «а ларчик просто открывался» спасибо еще раз, огромное Уж больно здесь красиво, жди беды.. |
|
alcnwndrlnd Пользователь Сообщений: 44 |
#18 08.12.2015 12:08:28 Kuzmich, потревожу Вас еще раз. Не получается добавить просмотр следующего интересующего меня столбца, после прохождения первого
так? Уж больно здесь красиво, жди беды.. |
||
Михаил Лебедев Пользователь Сообщений: 2856 |
#19 08.12.2015 12:22:39 попробуйте так:
Изменено: Михаил Лебедев — 10.12.2015 11:57:00 Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/ |
||
Уж больно здесь красиво, жди беды.. |
|
Kuzmich Пользователь Сообщений: 7998 |
#21 08.12.2015 12:42:39
|
||
Kuzmich, пробовала, второй столбец не красит, но и ошибку не выдает Уж больно здесь красиво, жди беды.. |
|
Kuzmich Пользователь Сообщений: 7998 |
#23 08.12.2015 12:46:23
|
||
Файл выложите. И/или поменяйте строку в моем коде, как предложил «кузмич» (я в своем предыдущем — поменял) Изменено: Михаил Лебедев — 08.12.2015 13:04:02 Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/ |
|
Kuzmich Пользователь Сообщений: 7998 |
#25 08.12.2015 13:04:42
Какой столбец? Когда подсвечивается вся строка. |
||
Kuzmich Пользователь Сообщений: 7998 |
Cells(i,2) — это будет второй столбец |
Михаил Лебедев Пользователь Сообщений: 2856 |
#27 08.12.2015 13:20:58
Изменено: Михаил Лебедев — 08.12.2015 13:21:20 Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/ |
||
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
alcnwndrlnd и vdovin_sg, код следует оформлять тегом — ищите такую кнопку (см. скрин). |
alcnwndrlnd Пользователь Сообщений: 44 |
#29 08.12.2015 13:46:53
Да, по условию. Сейчас попробую с исправлениями Уж больно здесь красиво, жди беды.. |
||
alcnwndrlnd Пользователь Сообщений: 44 |
#30 08.12.2015 14:39:05 Михаил Лебедев, спасибо! Kuzmich, и снова, еще раз спасибо! во всем разобралась, все работает, как надо
Изменено: alcnwndrlnd — 08.12.2015 14:39:41 Уж больно здесь красиво, жди беды.. |
||
I have a Userform that populates a ListBox with data from a table. What I would like it to do is if there is any missing data, make that row red.
This is the code for the Userform but I don’t know where to start for the row colours.
Dim iRow As Long
DeclareVars
iRow = Backtable.ListRows.Count + 1 ' idetifying the last row. + 1 added due to the form not shopwing the last line in table
With frmform
.txtID.value = ""
.txtArea.value = ""
.txtSupplier.value = ""
.txtItemDetails.value = ""
.txtContactDetails.value = ""
.txtConRenewalDate.value = "dd/mm/yyyy"
.txtFreq.value = "e.g. 4 for 4 times per year"
.txtNextService.value = "dd/mm/yyyy"
.txtRisk.value = "'Y' or 'N'"
'--------------------------------
'Default Color
.txtID.BackColor = vbWhite
.txtArea.BackColor = vbWhite
.txtSupplier.BackColor = vbWhite
.txtItemDetails.BackColor = vbWhite
.txtContactDetails.BackColor = vbWhite
.txtConRenewalDate.BackColor = vbWhite
.txtFreq.BackColor = vbWhite
.txtNextService.BackColor = vbWhite
.txtRisk.BackColor = vbWhite
'-----------------------------------------------
.lstDatabase.ColumnCount = Backtable.ListColumns.Count
.lstDatabase.ColumnHeads = True
.lstDatabase.ColumnWidths = "30,60,75,55,60,45,30,70,70"
If iRow > 1 Then
.lstDatabase.RowSource = "Database!A2:I" & iRow
Else
.lstDatabase.RowSource = "Database!A2:I2"
End If
'-----------------------------------------------
End With
Содержание
- Выделение активной ячейки, строки или столбца
- Выделение активной ячейки
- Выделение всей строки и столбца, содержащих активную ячейку
- Выделение строки и столбца, содержащих активную ячейку, в текущей области
- Об участнике
- Поддержка и обратная связь
- Выделение строки цветом vba excel
- Выделение строки цветом vba excel
Выделение активной ячейки, строки или столбца
В следующих примерах кода показаны способы выделения активной ячейки или строк и столбцов, содержащих активную ячейку. В этих примерах используется событие SelectionChange объекта Worksheet.
Пример кода предоставил: Том Уртис, Atlas Programming Management
Выделение активной ячейки
В следующем примере кода показано, как удалить цвет во всех ячейках листа, присвоив свойству ColorIndex значение 0, а затем выделить активную ячейку, присвоив свойству ColorIndex значение 8 (бирюзовый).
Выделение всей строки и столбца, содержащих активную ячейку
В следующем примере кода показано, как удалить цвет во всех ячейках листа, присвоив свойству ColorIndex значение 0, а затем выделить всю строку и столбец, содержащие активную ячейку, с помощью свойств EntireRow и EntireColumn.
Выделение строки и столбца, содержащих активную ячейку, в текущей области
В следующем примере кода показано, как удалить цвет во всех ячейках листа, присвоив свойству ColorIndex значение 0, а затем в текущей области выделить строку и столбец, содержащие активную ячейку, используя свойство CurrentRegion объекта Range.
Об участнике
Том Уртис, MVP — основатель компании Atlas Programming Management, создающей полноценные бизнес-решения для Microsoft Office и Excel в Кремниевой долине. Том обладает больше чем 25 годами опыта управления бизнесом и разработки приложений для Microsoft Office, а также является соавтором книги «Holy Macro! It’s 2,500 Excel VBA Examples».
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Выделение строки цветом vba excel
Добрый вечер, знатоки макросов!
Подскажите пожалуйста, что нужно добавить в существующий макрос, чтобы было не просто выделение активных строки/столбца, а выделение цветом?
код макроса выделения такой:
[vba]
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim WorkRange As Range
If Target.Cells.Count > 1 Then Exit Sub ‘если выделено больше 1 ячейки — выходим
Application.ScreenUpdating = False
Set WorkRange = Range(«A11:BX7300») ‘адрес рабочего диапазона, в пределах которого видно выделение
Intersect(WorkRange, Union(Target.EntireColumn, Target.EntireRow)).Select ‘формируем крестообразный диапазон и выделяем
Target.Activate
Добрый вечер, знатоки макросов!
Подскажите пожалуйста, что нужно добавить в существующий макрос, чтобы было не просто выделение активных строки/столбца, а выделение цветом?
код макроса выделения такой:
[vba]
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim WorkRange As Range
If Target.Cells.Count > 1 Then Exit Sub ‘если выделено больше 1 ячейки — выходим
Application.ScreenUpdating = False
Set WorkRange = Range(«A11:BX7300») ‘адрес рабочего диапазона, в пределах которого видно выделение
Intersect(WorkRange, Union(Target.EntireColumn, Target.EntireRow)).Select ‘формируем крестообразный диапазон и выделяем
Target.Activate
Сообщение Добрый вечер, знатоки макросов!
Подскажите пожалуйста, что нужно добавить в существующий макрос, чтобы было не просто выделение активных строки/столбца, а выделение цветом?
код макроса выделения такой:
[vba]
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim WorkRange As Range
If Target.Cells.Count > 1 Then Exit Sub ‘если выделено больше 1 ячейки — выходим
Application.ScreenUpdating = False
Set WorkRange = Range(«A11:BX7300») ‘адрес рабочего диапазона, в пределах которого видно выделение
Intersect(WorkRange, Union(Target.EntireColumn, Target.EntireRow)).Select ‘формируем крестообразный диапазон и выделяем
Target.Activate
Kuzmich | Дата: Пятница, 20.09.2019, 22:35 | Сообщение № 2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
alcnwndrlnd 0 / 0 / 0 Регистрация: 08.12.2015 Сообщений: 12 |
||||
1 |
||||
Изменить цвет строки в соответствии с значением в ячейке08.12.2015, 09:37. Показов 3975. Ответов 2 Метки нет (Все метки)
Всем привет!
0 |
15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
|
08.12.2015, 11:33 |
2 |
alcnwndrlnd, почему не условное форматирование?
1 |
alcnwndrlnd 0 / 0 / 0 Регистрация: 08.12.2015 Сообщений: 12 |
||||
08.12.2015, 11:42 [ТС] |
3 |
|||
Казанский, для большого количества значений код слишком громоздкий, и останавливается на полпути. Условное форматирование не подходит из-за того, что каждый раз задавать его придется. Спасибо ребятам с форума planetexcel, в частности Kuzmich, k61, vdovin_sg. Код Kuzmich:
Тему можно считать закрытой.
0 |
This macro will highlight the row and column of the active cell. This will fill the row of the active cell with a solid background color and remove the color when a different cell is selected within the excel spreadsheet. Anytime you select a different cell, the new column and row will be highlighted. This is a great macro for zeroing in on a specific cell during a presentation or just when working in a really big spreadsheet. Also, if you remove the gridlines from the spreadsheet, it can be hard to determine which row or column a cell is in and this will allow you to figure that out much quicker.
This macro will overwrite any previous color in the selected cell and row. That means that if you have a worksheet with a lot of background colors and you use this macro and start selecting cells, the previous background colors will disappear.
To change the color of the highlight change the number in this line of code .ColorIndex = 6.
Where to install the macro: Worksheet
Highlight the Row of the Selected Cell
Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Static rr
If rr <> "" Then
With Rows(rr).Interior
.ColorIndex = xlNone
End With
End If
r = Selection.Row
rr = r
With Rows(r).Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End Sub
Excel VBA Course — From Beginner to Expert
200+ Video Lessons
50+ Hours of Instruction
200+ Excel Guides
Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)
View Course
Similar Content on TeachExcel
Make a UserForm in Excel
Tutorial: Let’s create a working UserForm in Excel.
This is a step-by-step tutorial that shows you e…
Excel VBA MsgBox — Message Box Macro
Tutorial: Create a pop-up message box in Excel using VBA Macros. This allows you to show a message t…
Pass Arguments to a Macro Called from a Button or Sheet in Excel
Tutorial: How to pass arguments and values to macros called from worksheets, buttons, and anything e…
Select Ranges in the Worksheet from a UserForm
Tutorial: Select a range in Excel from a UserForm and have that range input into the form so that yo…
NPER Function — Calculate Number of Periods Needed for a Set of Payments in Excel
Tutorial: How to calculate the number of periods required for an investment in order to get the desi…
Count the Occurrences of the Largest or Smallest Value in a Range
Tutorial:
How to count the occurrence of the largest or smallest value in a range; basically, how m…
How to Install the Macro
- Select and copy the text from within the grey box above.
- Open the Microsoft Excel file in which you would like the Macro to function.
- Press «Alt + F11» — This will open the Visual Basic Editor — Works for all Excel Versions.
Or For other ways to get there, Click Here. - On the new window that opens up, go to the left side where the vertical pane is located. Locate your Excel file; it will be called VBAProject (YOUR FILE’S NAME HERE) and click this.
- If the Macro goes in a Module, Click Here, otherwise continue to Step 8.
- If the Macro goes in the Workbook or ThisWorkbook, Click Here, otherwise continue to Step 8.
- If the Macro goes in the Worksheet Code, Click Here, otherwise continue to Step 8.
- Close the Microsoft Visual Basic Editor window and save the Excel file. When you close the Visual Basic Editor window, the regular Excel window will not close.
- You are now ready to run the macro.
Similar Content
Make a UserForm in Excel
Tutorial: Let’s create a working UserForm in Excel.
This is a step-by-step tutorial that shows you e…
Excel VBA MsgBox — Message Box Macro
Tutorial: Create a pop-up message box in Excel using VBA Macros. This allows you to show a message t…
Pass Arguments to a Macro Called from a Button or Sheet in Excel
Tutorial: How to pass arguments and values to macros called from worksheets, buttons, and anything e…
Excel VBA Course — From Beginner to Expert
200+ Video Lessons
50+ Hours of Video
200+ Excel Guides
Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)
View Course
В данном примере описаны макросы для автоматического форматирования или спроса формата для ячеек таблиц 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
Первая инструкция в коде, проверяет выделены ли ячейки диапазоном. Если перед выполнением макроса выделил другой элемент листа, например, график, тогда макрос закрывается и дальнейшие инструкции выполняться не будут. В противные случаи будут форматироваться все выделенные ячейки по очереди в соответствии с определенными настройками форматирования:
- Текст в значениях ячеек выравнивается по центру горизонтально и вертикально.
- Включен построчный перенос текста.
- Все границы ячеек получают черную обычной толщины непрерывную линию с черным цветом.
- Сброс цвета шрифта на авто.
- Удаляется любая заливка ячеек.
- Ширина столбцов автоматически настраивается под текст в ячейках.
- Автоматически настроить высоту строк по содержимому ячеек.
Модификация исходного кода макроса для форматирования
Если необходимо сделать так чтобы текст выравнивался не по центру относительно горизонтали, а по правую сторону ячейки, тогда измените константу 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-макросов. Уверен, что теперь вы сможете самостоятельно найти практическое применение этим исходным кодам.