在设计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
发表评论