Vba 从Excel调用到更改格式的引用范围

Vba 从Excel调用到更改格式的引用范围,vba,excel,range,Vba,Excel,Range,我正在尝试从电子表格创建一个调用,该调用将更改为单元格的格式。当我显式枚举范围(即“C7”)时,我的代码工作。当我在excel函数调用中隐式设置它时,它不会: 如果我在单元格中输入=call_color,“C7”变为绿色。如果我把=Color\u Green(C7)放在同一个单元格中,它就不起作用了 Sub call_color() Dim TestVal As Range Set TestVal = Range("C7") Call Color_Green(TestVa

我正在尝试从电子表格创建一个调用,该调用将更改为单元格的格式。当我显式枚举范围(即“C7”)时,我的代码工作。当我在excel函数调用中隐式设置它时,它不会:

如果我在单元格中输入=call_color,“C7”变为绿色。如果我把=Color\u Green(C7)放在同一个单元格中,它就不起作用了

Sub call_color()
    Dim TestVal As Range
    Set TestVal = Range("C7")
    Call Color_Green(TestVal)
End Sub
Sub Color_Green(ByRef MyRng As Range)
   ' Color Green Macro
    MyRng.Select
    With Selection.Interior
       .Color = RGB(0, 250, 0)
    End With
End Sub

我希望能够在vb中进行一些计算,并根据这些计算格式化单元格。如何传递允许.interior函数工作的范围?

不要使用select或selection并提供父工作表引用

Sub call_color()
    Dim TestVal As Range
    Set TestVal = worksheets("sheet1").Range("C7")
    Color_Green TestVal
End Sub

Sub Color_Green(ByRef MyRng As Range)
   ' Color Green Macro
    MyRng.Interior.Color = RGB(0, 250, 0)
End Sub

可以使用sub执行此操作,但不能使用从工作表中调用的UDF来更改单元格的格式或除调用者之外的任何单元格的值。