Диалоговое окно выбора цвета (функция VBA для запроса цвета заливки)
- Макросы VBA Excel
- Разное
- Разное
|
Данная функция позволяет запрашивать у пользователя цвет заливки.
Функция возвращает целое число - значение цвета в формате RGB
Пример использования:
Sub ОкраскаЯчейкиВВыбранныйЦвет()
On Error Resume Next
DefaultColor& = vbRed ' цвет по-умолчанию
NewColor& = PickNewColor(DefaultColor&) ' выбираем новый цвет
ActiveCell.Interior.Color = NewColor& ' красим активную ячейку
End Sub
Код функции:
Function PickNewColor(Optional ByVal i_OldColor As Double = xlNone) As Double
' функция отображает диалоговое окно выбора цвета заливки
' и возвращает значение выбранного цвета
On Error Resume Next:
PickNewColor = i_OldColor
Const BGColor As Long = 13160660, ColorIndexLast As Long = 32
Dim myOrgColor As Double, myNewColor As Double, WB As Workbook
Dim myRGB_R As Integer, myRGB_G As Integer, myRGB_B As Integer
If ActiveWorkbook Is Nothing Then Application.ScreenUpdating = False: Set WB = Workbooks.Add
myOrgColor = ActiveWorkbook.Colors(ColorIndexLast) 'save original palette color
i_Color = IIf(i_OldColor = xlNone, BGColor, i_OldColor): myRGB_R = i_Color Mod 256
i_Color = i_Color \ 256: myRGB_G = i_Color Mod 256
i_Color = i_Color \ 256: myRGB_B = i_Color Mod 256
ActiveWorkbook.ResetColors 'AppActivate Application.Name
If Application.Dialogs(xlDialogEditColor).Show(ColorIndexLast, myRGB_R, myRGB_G, myRGB_B) Then
PickNewColor = ActiveWorkbook.Colors(ColorIndexLast)
ThisWorkbook.Colors(ColorIndexLast) = myOrgColor
End If
If Not WB Is Nothing Then WB.Close False: Application.ScreenUpdating = True
End Function
В прикреплённом файле, - пример использования функции для выбора цветов на форме
Вложение |
Размер |
Загрузки |
Последняя загрузка |
PickColor_Userform.xls |
47 КБ |
11 |
3 года 2 недели назад |
|