我有以下问题。我想调用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是字符串,我将它连接到范围声明:
RangeArea = """" & Range1 & ":" & Range2 & """"
当我像这样调用我的子程序时:
Call SetBGLightGrey(RangeArea)
我收到以下错误消息:
“运行时错误'1004':对象'_Global'的方法'范围'失败。我不明白,因为如果我用正确的单元格值调用子程序:
Call SetBGLightGrey("D4:K4")
它有效。它是字符串并且具有相同的值。这根本不可能吗?
答案 0 :(得分:2)
您不需要RangeArea附近的引号。
RangeArea = Range1 & ":" & Range2
但是,为什么你想要将范围作为字符串传递,然后将它们转换回范围?一直传递范围对象。
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))