鱼C论坛

 找回密码
 立即注册

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

已有 743 次阅读2019-9-17 20:39 |个人分类:办公软件

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

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

Visual Basic
1
2
3
4
5
6
7
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属性返回的是调色板中的颜色,它的语法如下:

Visual Basic
1
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方法重置调色板为默认的。

以下是一个通用的代码:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 08:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部