如何用vba调出调色板选择颜色对话框,并且保存使用选择的颜色?

在设计vba解决方案时,有时候需要给用户提供选择颜色的操作,同时,基于用户选择的颜色执行某些操作。

在vba中可以使用如下的代码弹出颜色对话框供选择颜色:

Sub QQ1722187970()
    Dim oDialog As Dialog
    Set oDialog = Excel.Application.Dialogs(xlDialogEditColor)
    'show方法后一定要输入一个数值参数,才能打开xlDialogEditColor对话框
    '该数值可以是1-56之间的任意整数
    oDialog.Show (1)
End Sub

当在上述“颜色”对话框中选择颜色后,单击“确定”按钮,直接关闭对话框。

如果要使用上述选中的颜色,需要调用Workbook.Colors属性。

Workbook.Colors属性返回的是调色板中的颜色,它的语法如下:

expression . Colors( Index )

其中Index参数为1-56的任意整数,代表调色板中的1到56种颜色。如果Index参数未提供,则返回一个含有56种颜色的数组。

当用 Excel.Application.Dialogs(xlDialogEditColor).show(1)打开颜色对话框后,默认选中的就是调色板中序号为1的颜色,如果修改了颜色,单击确定,则调色板中序号为1的颜色就变了,但是可以通过Workbook.Colors(1)读取修改后的颜色。

类似的当用 Excel.Application.Dialogs(xlDialogEditColor).show(2)打开颜色对话框后,默认选中的就是调色板中序号为2的颜色,如果修改了颜色,单击确定,则调色板中序号为2的颜色就变了,但是可以通过Workbook.Colors(2)读取修改后的颜色。

基于这样的原理,就可以将调色板中选择的颜色保存下来。

如果需要将调色板1-56序号对应的颜色修改为默认的颜色,可以使用Workbook.ResetColors方法重置调色板为默认的。

以下是一个通用的代码:

Sub QQ1722187970()
    Dim oWB As Workbook
    Set oWB = Excel.ThisWorkbook
    '将调色板设置为默认的
    oWB.ResetColors
    Dim oDialog As Dialog
    Set oDialog = Excel.Application.Dialogs(xlDialogEditColor)
    'show方法后一定要输入一个数值参数,才能打开xlDialogEditColor对话框
    '该数值可以是1-56之间的任意整数
    If oDialog.Show(1) = True Then
        '获取选择的颜色
        iColor = oWB.Colors(1)
        '设置单元格的填充色
        oWB.Worksheets(1).Range("a1").Interior.Color = iColor
    End If
End Sub
       

发表评论