[英]excel vba subroutine call fails
我有以下問題。 我想調用一個子程序來更改單元格范圍的背景顏色。 用cells(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':object'_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))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.