更改自定义公式的单元格的背景颜色

我已经创build了看起来像这样的公式函数

Function CalculateCPOTracker(Model As String, Mcodes As String, Opt As String, RegionId As String, RecTotalAvailNFormat As String, RecTotalAvailValue As String, GroupModel As String, MandateFormat As String, MandateValue As String, RowNumber As String) As Double ..... CalculateCPOTracker = buffer End Function 

在这个函数的最后,我需要改变一个单元格的背景颜色。 我试图做这样的事情

 Worksheets("Rec").Range("BA:BA").Rows(38).Interior.Color = RGB(255, 255, 0) 

但是这对我不起作用。 它停止计算正确。 是否有可能从公式函数做到这一点?

尝试像这样:

 Worksheets("Rec").cells(52,38).interior.color = rgb(255,255,0) 

但是从函数中改变字体在VBA中并不是一个好的做法。 通常函数应该返回值,并且变化应该由一个子进行。 喜欢这个:

 Public sub ChangeColor (rngCell as range) rngCell.interior.color = rgb(255,255,0) end sub 

即使使用颜色的可选值:

 Option Explicit Public Sub ChangeColor(rngCell As Range, _ Optional lngR As Long = 255, _ Optional lngG As Long = 255, _ Optional lngB As Long = 0) rngCell.Interior.Color = RGB(lngR, lngG, lngB) End Sub 

编辑:其实,这取决于你想要做什么:如果你想使用该函数作为工作表函数,你不能改变颜色,因为@Scott Craner在评论中提到。 但是,如果您从VBA运行该function,则可以执行此操作。 试试这个小例子来看看不同之处:

 Option Explicit Public Function ColorAndBy10(rngMyRange As Range) As Long rngMyRange.Interior.Color = vbRed ColorAndBy10 = 10 * rngMyRange.Value End Function Public Sub TestMe() Range("b1").Formula = "=ColorAndBy10(A1)" Range("b2") = ColorAndBy10(Range("a2")) End Sub Public Sub TestMe() Range("b1").Formula = "=ColorAndBy10(A1)" Range("b2") = ColorAndBy10(Range("a2")) End Sub