Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
彩色单元格的VBA自定义项_Vba_Excel - Fatal编程技术网

彩色单元格的VBA自定义项

彩色单元格的VBA自定义项,vba,excel,Vba,Excel,我相信我的问题对你们大多数人来说都很简单,因为我是UDF的新手。我已经创建了以下UDF,但在使用=CheckColor1H13:M13时无法跨列应用它 Function CheckColor1(range) If range.Interior.Color = RGB(0, 176, 80) Then CheckColor1 = "Final" ElseIf range.Interior.Color = RGB(255, 255, 0) Then C

我相信我的问题对你们大多数人来说都很简单,因为我是UDF的新手。我已经创建了以下UDF,但在使用=CheckColor1H13:M13时无法跨列应用它

Function CheckColor1(range)
    If range.Interior.Color = RGB(0, 176, 80) Then
        CheckColor1 = "Final"
    ElseIf range.Interior.Color = RGB(255, 255, 0) Then
        CheckColor1 = "Final"
    ElseIf range.Interior.Color = RGB(191, 191, 191) Then
        CheckColor1 = "Final"
    ElseIf range = 0 Then
        CheckColor1 = "Final"
    Else
        CheckColor1 = " "
    End If
End Function

您忘记定义函数的参数对象或数据类型

根据过程参数的语法,就像声明变量一样,必须使用As来指定参数的类型

必须将参数声明为普通变量,忽略Dim关键字

但是,您不能使用数据或对象类型的名称作为参数名称本身,这正是您尝试执行的操作

Function CheckColor1(r as Range)
    If r.Interior.Color = RGB(0, 176, 80) Then
        CheckColor1 = "Final"
    ElseIf r.Interior.Color = RGB(255, 255, 0) Then
        CheckColor1 = "Final"
    ElseIf r.Interior.Color = RGB(191, 191, 191) Then
        CheckColor1 = "Final"
    ElseIf r.interior.colordindex = 0 Then
        CheckColor1 = "Final"
    Else
        CheckColor1 = " "
    End If
End Function

非常有趣…….该函数是测试某个范围内的所有单元格,还是仅测试该范围内的单个单元格?我想它测试所有单元格?@Gary的学生有趣的是,.Interior.Color属性将返回0,如果单元格不都具有相同的颜色,或者如果它们都相同,则返回颜色的RGB值。如果所有单元格都是黑色,它也将返回0。@JLILI Aman如果进入r=0测试,代码将出错。更正了@coolblue不确定它是否与您的问题相关,但这里有两个警告:Range.Interior.Color不会返回条件格式设置的颜色;b虽然Range.DisplayFormat.Interior.Color返回条件格式设置的正确颜色,但不能在工作表函数中使用它,如=CheckColor1H13:M13。以防你使用条件格式…@Marek Stejskal是的,非常正确。为什么你认为它在UDF中不起作用?有什么逻辑吗?@CoolBlue我直接在MSDN文档搜索Range.DisplayFormat属性中找到了它,所以它可能是设计的。如果有逻辑的话,我看不出来。