访问VBA - 参数不是可选的 - 背景颜色

时间:2015-12-23 10:00:24

标签: vba ms-access access-vba rgb

我有一个表格,用户可以在其中选择数据库的颜色方案

ID | Colour     | SelectedScheme
---|------------|--------------
1  | 136,207,39 | Yes

然后在我的表单上,我在当前事件选项卡上有以下内容

Dim RGBcolor As Long
RBGcolor = DLookup("Colour", "SelectedScheme")
Me.boxheader.BackColor = RGB(RGBcolor)

但是我得到的Argument不是可选错误。任何想法?

3 个答案:

答案 0 :(得分:2)

RGB函数的参数是数字,而不是字符串,应该有3个:

RGB(136,207,39)

您正在尝试传递一个字符串参数。 您可以使用Split函数从字符串中提取颜色值:

Me.boxheader.BackColor = RGB(Split(RGBcolor,",")(0),Split(RGBcolor,",")(1),Split(RGBcolor,",")(2))

答案 1 :(得分:1)

Dlookup函数接受以下参数:

  • FieldName:您希望返回的表单,计算,对表单或函数的控制;
  • TableName:记录集。这可以是表格或查询名称;
  • Criteria(可选):应用于TableName的WHERE子句。

RGB功能接受这三个:

  • 红色:颜色的红色成分;
  • 绿色:颜色的绿色成分;
  • 蓝色:颜色的蓝色成分。

我建议您在表格中使用三个不同的列作为组件颜色:

ID | ColourR | ColourG | ColourB | SelectedScheme
---|---------|---------|---------|---------------
1  | 136     |207      | 39      | Yes

您的活动可以写成:

Me.boxheader.BackColor = RGB(
  DLookup("ColourR", "SchemaTableName", "SelectedScheme=TRUE"),
  DLookup("ColourG", "SchemaTableName", "SelectedScheme=TRUE"),
  DLookup("ColourB", "SchemaTableName", "SelectedScheme=TRUE")
)

这将从表SchemaTableName中选择字段SelectedScheme设置为true的颜色。

答案 2 :(得分:1)

RGB()函数需要3个数字,但您的代码提供单个字符串值。这是“Argument not optional”编译错误的原因。

构造一个新字符串,其中包含RGB()函数和您的数字字符串。将新字符串提交到Eval() ...

Me.boxheader.BackColor = Eval("RGB(" & RBGcolor & ")")