VBA改变矩形的BackColor - 访问

时间:2015-09-18 12:17:21

标签: vba access-vba backcolor

所以我试图改变Access中矩形的背景颜色。我知道您可以轻松地执行此操作Box1.BackColor = RGB(0, 0, 0),但我想在文本框中输入一个值,然后在更新文本框后立即显示该颜色值。

我认为以下内容可行,但事实并非如此。

Textbox1 = 0,0,0

Dim P1 as String
P1 = "RGB(" + Textbox1.text + ")"
Box1.Backcolor = P1

我怎样才能动态改变背景颜色?

2 个答案:

答案 0 :(得分:2)

你可以split文本,通过int运行条目并将其提供给RGB

Dim A As Variant
A = Split(Textbox1.text,",")
Box1.BackColor = RGB(Int(A(0)),Int(A(1)), Int(A(2)))

答案 1 :(得分:2)

根据您的代码,Eval()应该适合您。该函数评估字符串,就好像是代码一样。 Backcolor很长,顺便说一句,所以我相应地调整了你的代码。

Dim P1 as Long
P1 = eval("RGB(" + Textbox1.text + ")")
Box1.Backcolor = P1

或者你可以抛弃P1并做到这一点:

Box1.Backcolor = eval("RGB(" + Textbox1.text + ")")

根据您的操作,您可能只想使用内置颜色对话框,而不是在文本框中输入文本。

这是API声明和可重复使用的功能

Declare Sub wlib_AccColorDialog Lib "msaccess.exe" Alias "#53" (ByVal Hwnd As Long, lngRGB As Long)

Function ChooseColor(nDefColor As Variant) As Long
  Dim lngColor As Long
  wlib_AccColorDialog Screen.ActiveForm.Hwnd, nDefColor
  ChooseColor = nDefColor
End Function

这就是你对这些功能的打电话;它传递了框的默认颜色,以便在对话框打开时选择。

Box1.BackColor = ChooseColor(Me.Box1.BackColor)