簡體   English   中英

excel vba 子程序調用失敗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM