相关疑难解决方法(0)

VBA函数用于测试单元格是否在Excel中有条件地格式化

我编写了下面的函数来测试单元格是否根据单元格填充激活了条件格式.

Function cfTest(inputCell)

    If inputCell.DisplayFormat.Interior.Color <> 16777215 Then
        cfTest = True
    Else
       cfTest = False
    End If
End Function
Run Code Online (Sandbox Code Playgroud)

但它不起作用.说,这个方法确实如此.

Sub myCFtest()
Dim R As Integer
R = 2
Do
    If Range("I" & R).DisplayFormat.Interior.Color <> 16777215 Then
        Range("K" & R).Value = True
    Else
        Range("K" & R).Value = False
    End If

    R = R + 1

Loop Until R = 20
End Sub
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释为什么功能不起作用?

干杯.

编辑:更新的功能,但不适用于条件格式

Function cfTest(inputCell)
    If inputCell.Interior.ColorIndex <> -4142 Then
        cfTest = True
    Else
       cfTest = False …
Run Code Online (Sandbox Code Playgroud)

excel vba function conditional-formatting

10
推荐指数
2
解决办法
2万
查看次数

从Excel VBA UDF调用时,Range.Precedents返回范围而不是其先例.有解决方法吗?

我有这个VBA功能:

Public Function testPrec(target As Range) As String
    testPrec = target.Precedents.Address(External:=False)
End Function
Run Code Online (Sandbox Code Playgroud)

在单元格C11中,我有这个公式:

=C6+C8
Run Code Online (Sandbox Code Playgroud)

如果我testPrec从即时窗口调用,它可以正常工作:

?testPrec([c11])
$C$6,$C$8
Run Code Online (Sandbox Code Playgroud)

编辑:如果从非UDF宏Sub调用它也可以正常工作.异常是UDF案例.

如果我从工作表中将其称为UDF:

=testPrec(C11)
Run Code Online (Sandbox Code Playgroud)

我刚回来"$ C $ 11".

有谁知道发生了什么,甚至更好地如何从UDF调用中获得实际的先例?(我正在使用Excel 2007.)

excel vba excel-2007 user-defined-functions

8
推荐指数
1
解决办法
2802
查看次数