如何编写将其写入的单元格作为参考的UDF

时间:2019-04-15 12:04:06

标签: excel vba

我想编写一个UDF,该UDF返回所写入单元格的背景色的RGB值。如何在不指定单元格的情况下刷新写入UDF的单元格?

我希望我的函数能像=COLUMN()工作表函数那样工作。

供应ActiveCell无效...因为重新计算工作表时,活动单元会进行其他操作。

Function BackgroundAsRGB(Optional rng As Range)
On Error GoTo Hell
    If rng Is Nothing Then
        Set rng = ActiveCell 'It isn't active cell...
    End If
    BackgroundAsRGB = ColorLongToRGB(rng.Resize(1, 1).Interior.Color)
Hell:
End Function

1 个答案:

答案 0 :(得分:4)

尝试:

    Function BackgroundAsRGB(Optional rng As Range)
Dim MyTarget As Range

If rng Is Nothing Then
    Set MyTarget = Application.Caller
Else
   Set MyTarget = rng
End If

BackgroundAsRGB = ColorLongToRGB(MyTarget.Resize(1, 1).Interior.Color)

End Function

Application.Caller返回正在调用UDF的对象,因此它返回执行此UDF的范围。更多信息:

  

Application.Caller property (Excel)

还要检查:

  

Application.ThisCell property (Excel)