范围对象未传入Function Excel VBA

时间:2018-03-04 22:20:51

标签: excel-vba vba excel

这似乎是一个简单的事情要解决,但我不太明白这个问题。我有一个函数,它接受一个Range参数但是当我使用一个循环时,它似乎没有识别它(我得到一个424 - 对象错误)。代码如下。

Sub PrintKeys(Data As Variant, C1 As Range)
Dim key As Variant
Dim Rg As Range
Set Rg = C1
Dim i As Integer
i = 1
For Each key In Data.Keys
    Rg.Offset(0, i).Value = key
    Rg.Offset(0, i).Interior.ColorIndex = 15
    i = i + 1
Next key
End Sub

如果我将上述内容改为,则可行:

placeholders

基于以上所述,Rg是一个Range对象,但前一个示例无法将其传递给Auto_Colour函数,尽管该函数接受一个Range。

我错过了什么?

提前致谢。

1 个答案:

答案 0 :(得分:3)

您的问题是第Auto_Colour (Rg)

括号告诉VBA传递参数ByVal覆盖默认(隐式)ByRef。对于Range,这会导致调用传递Rg的默认属性,即Rg.Value,这导致Auto_Colour中的类型不匹配

解决方案:放弃(),即使用Auto_Colour Rg