excel vba子程序调用失败

问题描述:

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

子程序调用我得到的地址,我的细胞就像在此之前:

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 & """" 

当我打电话给我的苏broutine这样的:

Call SetBGLightGrey(RangeArea) 

我收到以下错误消息:

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

Call SetBGLightGrey("D4:K4") 

它的工作原理。它是字符串并具有相同的值。这根本不可能吗?

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)) 
+0

是的你是对的。这是问题所在。谢谢。 – user366121 2011-06-07 11:24:52