Официальные названия цветов в VBA (Microsoft Excel)
В Excel используется палитра цветов, состоящая из 56 цветов. Эти цвета можно увидеть, если отобразить вкладку «Узоры» в диалоговом окне «Формат ячеек».
При создании макросов в VBA вы можете ссылаться на эти цвета по имени, используя константы.
К сожалению, в Excel VBA нет констант, определенных для каждого из 56 цветов палитры. Единственные цвета, определенные по имени, являются членами класса ColorConstants, и есть восемь членов класса: vbBlack, vbWhite, vbRed, vbGreen, vbBlue, vbYellow, vbMagenta и vbCyan.
В VBA вы можете использовать свойство ColorIndex, чтобы определить, какой цвет вы хотите использовать из палитры Excel. Проблема в том, что ColorIndex не является цветом; это указатель в палитре. Таким образом, ColorIndex, равный 1, является первым цветом в палитре, 2 — вторым и так далее. Вы можете увидеть это в действии, посмотрев пример кода по этому адресу:
http://www.ozgrid.com/VBA/ReturnCellColor.htm
Этот код проверяет свойство ColorIndex для ячейки и возвращает имя цвета. Однако возвращаемое имя не является константой для цвета; это всего лишь описание цвета палитры по этому индексу.
Если вы хотите установить цвет ячейки, вам действительно следует использовать свойство Color. Это свойство позволяет использовать восемь цветовых констант VBA, упомянутых ранее. Так получилось, что если вы используете это свойство Color для установки внутреннего цвета ячейки, вы обнаружите, что восемь названных цветов соответствуют значениям ColorIndex от 1 до 8. Следующий макрос прекрасно иллюстрирует это:
Sub CheckColors() Dim arr8Colors As Variant Dim i As Integer arr8Colors = Array( _ vbBlack, vbWhite, vbRed, vbGreen, _ vbBlue, vbYellow, vbMagenta, vbCyan) For i = 0 To 7 Selection.Offset(i, 0).Interior.Color = arr8Colors(i) Selection.Offset(i, 1).Value = Selection.Offset(i, 0).Interior.ColorIndex Next i End Sub
Это соответствие для первых восьми значений между Color и ColorIndex следует рассматривать только как артефакт истории, восходящий к тем временам, когда Excel позволял использовать только восемь цветов — восемь цветов, определенных с помощью констант VBA. Если вы хотите указать какой-либо другой цвет для ячейки, вы должны использовать функцию RGB, чтобы указать свойство Color, как показано здесь:
Selection.Interior.Color = RGB(128, 64, 255)
Функция RGB позволяет указать красный, зеленый и синий компоненты любого цвета. Каждый компонент может принимать значения от 0 до 255.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (2778) применим к Microsoft Excel 97, 2000, 2002 и 2003.