2011-06-07 104 views
0

我有以下問題。我想調用一個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") 

它的工作原理。它是字符串並具有相同的值。這根本不可能嗎?

回答

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

是的你是對的。這是問題所在。謝謝。 – user366121 2011-06-07 11:24:52