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

时间:2018-06-28 18:47:51

标签: excel vba excel-vba range

我正在尝试从电子表格创建呼叫,该呼叫将更改为单元格的格式。当我明确列举范围(即“ C7”)时,我的代码有效。当我在excel函数调用中隐式创建它时,它不会:

如果将= call_color放在单元格中,则“ C7”变为绿色。如果我将= Color_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功能起作用的范围?

1 个答案:

答案 0 :(得分:0)

不要使用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