为什么用vba无法打开xlDialogEditColor对话框?

vba中提供了Application对象的Dialogs属性用于返回excel应用程序的内置对话框。

比如如下的代码将分别弹出“打开”文件对话框和”设置字体”对话框。

Sub QQ1722187970()
    '弹出打开文件对话框
    Excel.Application.Dialogs(xlDialogOpen).Show
    '弹出设置字体对话框
    Excel.Application.Dialogs(xlDialogFont).Show
End Sub

其它的内置对话框常量可以见内置对话框枚举

在vba中提供了Application对象的Dialogs属性返回的是Dialog对象。

在vba中Dialog对象只有一个Show方法可以使用。

正常情况下,只需要用Dialog.Show即可打开相应的对话框。

但是有些对话框却不行,比如xlDialogEditColor对话框,用如下的代码将报错:

Sub QQ1722187970()
    Dim oDialog As Dialog
    Set oDialog = Excel.Application.Dialogs(xlDialogEditColor)
    oDialog.Show
End Sub

这是因为,Dialog对象的Show方法的语法如下:

expression . Show( Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8 , Arg9 , Arg10 , Arg11 , Arg12 , Arg13 , Arg14 , Arg15 , Arg16 , Arg17 , Arg18 , Arg19 , Arg20 , Arg21 , Arg22 , Arg23 , Arg24 , Arg25 , Arg26 , Arg27 , Arg28 , Arg29 , Arg30 )

也就是Show后面可以跟参数,打开某些对话框需要提供具体的参数才能打开,xlDialogEditColor对话框就是此类。

具体某个对话框对应的参数有哪些,需要提供哪些,可以看以下链接。

内置对话框参数列表

其中xlDialogEditColor对话框对应的参数有color_num, red_value, green_value, blue_value

这里只有第一个参数color_num 是必须的,其它参数是可选的。其中color_num参数表示的是调色板中的颜色,可以是1-56之间的任意一个数值。

为此,将上述代码修改如下:

Sub QQ1722187970()
    Dim oDialog As Dialog
    Set oDialog = Excel.Application.Dialogs(xlDialogEditColor)
    'show方法后一定要输入一个数值参数,才能打开xlDialogEditColor对话框
    oDialog.Show (1)
End Sub

运行后,就可以打开如下所示的颜色对话框了。

 

 

 

       

发表评论