excel vba子程序调用失败

我有以下问题。 我想调用一个soubroutine来改变单元格区域的背景颜色。 单元格范围用单元格(1,1)计算,然后计算地址以接收A1。

在子程序被调用之前,我得到了像这样的单元格的地址:

Range1 = cells(4, 4).Address(RowAbsolute:=False, ColumnAbsolute:=False) Range2 = cells(4, CellAmount - 1).Address(RowAbsolute:=False, ColumnAbsolute:=False) 

我以为我需要这个,因为子程序是这样声明的:

 Sub SetBGLightGrey(cells As String) range(cells).Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 15921906 .TintAndShade = 0 .PatternTintAndShade = 0 End With End Sub 

范围1和范围2是string,我把它连接到范围声明:

 RangeArea = """" & Range1 & ":" & Range2 & """" 

当我像这样调用我的子程序时:

 Call SetBGLightGrey(RangeArea) 

我收到以下错误消息:

“运行时错误'1004':对象'_Global'的方法'范围'失败我不明白,因为如果我调用子程序正确的单元格值:

 Call SetBGLightGrey("D4:K4") 

有用。 它是string,并具有相同的值。 这根本不可能吗?

RangeArea周围不需要引号。

 RangeArea = Range1 & ":" & Range2 

但是,那么为什么你想要传递范围作为string,然后将其转换回范围? 一直传递范围对象。

 Sub SetBGLightGrey(byval cells as range) With cells.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 15921906 .TintAndShade = 0 .PatternTintAndShade = 0 End With End Sub SetBGLightGrey range(cells(4, 4), cells(4, CellAmount - 1))