楼主 chrisfang |
在有些程序中,需要向用户提供选择颜色的功能,调用Excel或Windows的调色板是一种比较理想的交互方式,关于在VBA中如何调用调色板,本人总结了以下几种方法: (以下程序以用户窗体中调用调色板修改Label1的标签字体颜色ForeColor为例) 方法一:调用单元格格式中的“字体”选项卡对话框。
方法二:调用Excel中的“编辑颜色对话框” 在Excel的选项设置中,有一项Excel调色板的设置(Excel2003菜单:工具—选项—颜色—修改),可以对Excel调色板中的56种颜色进行编辑修改自定义,此方法就是调用这里的编辑颜色对话框。
方法三:调用WindowsAPI,调用Windows的调色板
其中CColor.lpCustColors指向16种自定义颜色的地址,如果要在程序运行过程中保存用户的自定义颜色,使得任何时候打开调色板都可以继续使用之前所定义的颜色,可以通过定义CustColors(1 to 16) As Byte为公共变量,然后使用VarPtr函数转换后将VarPtr(CustColors(1))赋值给CColor.lpCustColors。 上面的代码中定义了类型RGBColor,主要用于方便程序处理中取得自定义颜色的RGB值,实际使用中并非必需。 如果不需要保存自定义颜色,lpCustColors的赋值比较随意。 方法四:使用CommonDialog控件,调用Windows调色板,需要系统控件支持。(Windows7中好像没有这个控件)
包含以上代码的综合附件: 调色板.rar 综合以上几种方法来看,个人比较推荐方法二,简单易行,而且使用的是Excel中的调色板,还可以自定义颜色。如果对API比较熟悉,也可以使用方法三。除此以外,也可以自己制作一个调色板窗体供用户选择颜色。例如下面这个John-Walkenbach的作品: |
2楼 wangqilong1980 |
Private Sub CommandButton1_Click() '保存活动单元格当前字体格式设置 With ActiveCell.Font x_name = .Name x_fontstyle = .FontStyle x_size = .Size x_Strikethrough = .Strikethrough x_Superscript = .Superscript x_Subscript = .Subscript x_OutlineFont = .OutlineFont x_Shadow = .Shadow x_Underline = .Underline x_ColorIndex = .ColorIndex End With dlg = Application.Dialogs(xlDialogActiveCellFont).Show '调用活动单元格字体设置选项卡对话框 '************其他类似对话框************* 'Application.Dialogs(xlDialogFontProperties).Show 'Application.Dialogs(xlDialogFormatFont).Show 'Application.Dialogs(xlDialogFont).Show 'Application.Dialogs(xlDialogPatterns).Show '单元格底纹设置 'Application.Dialogs(xlDialogReplaceFont).Show '查找替换对话框中的字体设置 'Application.Dialogs(xlDialogStandardFont).Show '************************************ If dlg = True Then Application.ScreenUpdating = False Me.Label1.ForeColor = ActiveCell.Font.Color '恢复活动单元格原有字体格式设置 With ActiveCell.Font .Name = x_name .FontStyle = x_fontstyle .Size = x_size .Strikethrough = x_Strikethrough .Superscript = x_Superscript .Subscript = x_Subscript .OutlineFont = x_OutlineFont .Shadow = x_Shadow .Underline = x_Underline .ColorIndex = x_ColorIndex End With Application.ScreenUpdating = True End If End Sub |
3楼 JOYARK1958 |
感谢分享!下载学习. |