VBA RBG - "Wrong number of arguments or invalid property argument"
VBA RBG - "Wrong number of arguments or invalid property argument"
我知道还有其他问题处理 "Wrong number of arguments or invalid property assignment",但是 none 处理在将 RGB 颜色分配给单元格内部的基本行上生成的错误。
此错误在下面的第 6 行生成。我不明白这是怎么可能的,因为 RGB 显然有三个参数。
我唯一能想到的是,今天早些时候,我在另一个(现已关闭的电子表格)中编写了一个宏,其中我使用首字母 "rgb" 作为变体名称。我知道,在 R 中,有可能通过用 UDF 替换它来意外地重新定义一个基函数,我想知道我现在是否无意中将 "rgb" 更改为 VBA 基本代码。但这听起来不太合理——我从未听说过 VBA 中发生过这种情况,它更像是一种 "for dummies" 类型的语言,我不认为它会给用户这种选择权。
编辑 是的 - 这个问题通过更改宏的名称得到解决,这是一个愚蠢的错误。但是,我要指出的是,这个错误也发生在不同的子程序中,我没有以如此愚蠢的方式命名它。我将需要调查为什么它也在那个子中发生。
Option Explicit
Sub RGB()
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ThisWorkbook
Set ws = Sheets("Sheet1")
ws.Range("G20").Interior.Color = RGB(255, 51, 204)
End Sub
如果评论没有完全解释..你在问题中陈述:
earlier today, I wrote a macro in a different (now closed
spreadsheet), where I used the initials "rgb" as a variant name.
但是,在您提供的示例中,您实际上也调用了您正在调用 RGB 的子例程。 这是问题的原因。重命名它会解决它,但当我在这里时,我可以与您分享一些其他要点:
这可行:
Option Explicit
Sub Set_G20_RGB()
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ThisWorkbook
Set ws = Sheets("Sheet1") ' should really be Set ws = wb.Sheets("Sheet1")
ws.Range("G20").Interior.Color = RGB(255, 51, 204)
End Sub
但是,为了让它更有用,您可能需要使用类似的东西:
Option Explicit
Sub Set_RGB(clr_rng As Range, red_value As Integer, grn_value As Integer, blu_value As Integer)
clr_rng.Interior.Color = RGB(red_value, grn_value, blu_value)
End Sub
可以这样称呼:
Set_RGB ThisWorkbook.Sheets("Sheet1").Range("G20"), 255, 51, 204
或..
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ThisWorkbook
Set ws = wb.Sheets("Sheet1")
Set_RGB ws.Range("G20"), 255, 51, 204
我知道还有其他问题处理 "Wrong number of arguments or invalid property assignment",但是 none 处理在将 RGB 颜色分配给单元格内部的基本行上生成的错误。
此错误在下面的第 6 行生成。我不明白这是怎么可能的,因为 RGB 显然有三个参数。
我唯一能想到的是,今天早些时候,我在另一个(现已关闭的电子表格)中编写了一个宏,其中我使用首字母 "rgb" 作为变体名称。我知道,在 R 中,有可能通过用 UDF 替换它来意外地重新定义一个基函数,我想知道我现在是否无意中将 "rgb" 更改为 VBA 基本代码。但这听起来不太合理——我从未听说过 VBA 中发生过这种情况,它更像是一种 "for dummies" 类型的语言,我不认为它会给用户这种选择权。
编辑 是的 - 这个问题通过更改宏的名称得到解决,这是一个愚蠢的错误。但是,我要指出的是,这个错误也发生在不同的子程序中,我没有以如此愚蠢的方式命名它。我将需要调查为什么它也在那个子中发生。
Option Explicit
Sub RGB()
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ThisWorkbook
Set ws = Sheets("Sheet1")
ws.Range("G20").Interior.Color = RGB(255, 51, 204)
End Sub
如果评论没有完全解释..你在问题中陈述:
earlier today, I wrote a macro in a different (now closed spreadsheet), where I used the initials "rgb" as a variant name.
但是,在您提供的示例中,您实际上也调用了您正在调用 RGB 的子例程。 这是问题的原因。重命名它会解决它,但当我在这里时,我可以与您分享一些其他要点:
这可行:
Option Explicit
Sub Set_G20_RGB()
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ThisWorkbook
Set ws = Sheets("Sheet1") ' should really be Set ws = wb.Sheets("Sheet1")
ws.Range("G20").Interior.Color = RGB(255, 51, 204)
End Sub
但是,为了让它更有用,您可能需要使用类似的东西:
Option Explicit
Sub Set_RGB(clr_rng As Range, red_value As Integer, grn_value As Integer, blu_value As Integer)
clr_rng.Interior.Color = RGB(red_value, grn_value, blu_value)
End Sub
可以这样称呼:
Set_RGB ThisWorkbook.Sheets("Sheet1").Range("G20"), 255, 51, 204
或..
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ThisWorkbook
Set ws = wb.Sheets("Sheet1")
Set_RGB ws.Range("G20"), 255, 51, 204