【问题标题】:VBA To Change BackColor Of Rectangle - AccessVBA 更改矩形的背景颜色 - 访问
【发布时间】:2015-12-15 14:15:14
【问题描述】:

所以我正在尝试更改 Access 中矩形的背景色。我知道您可以轻松做到这一点Box1.BackColor = RGB(0, 0, 0),但是我想在文本框中输入一个值,然后在您更新文本框后立即显示该颜色值。

我认为以下方法会起作用,但它没有。

文本框1 = 0, 0, 0

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

如何动态更改背景颜色?

【问题讨论】:

    标签: ms-access vba backcolor


    【解决方案1】:

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

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

    【讨论】:

    • 也许使用 val() 而不是 int 来允许任何额外的空格,并且在无效值上得到 0
    • @AlexK。不错的主意——尽管我很确定Int 可以容忍空格——Int(" 1 ") 的计算结果为 1。
    • 我喜欢这个建议,非常感谢。
    【解决方案2】:

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

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 2019-01-15
      • 2013-08-08
      相关资源
      最近更新 更多