在VBA中设置访问颜色代码

时间:2016-11-14 12:10:21

标签: ms-access

我无法在Access数据库中设置文本框的背景颜色。我想在满足某些条件时将颜色更改为红色。

在设计视图中,我将文本框的背面颜色属性设置为红色,并显示为'#ED1C24'。当我在窗体视图中查看窗体时,控件正确地以我选择的红色显示。

但是当我把这个值放到我的VBA代码中时(Text1.Backcolor ="#ED1C24")我得到了一个类型不匹配错误。

我尝试将其更改为十六进制数字(Text1.Backcolor =& HED1C24),但随后控件变为蓝色。

任何帮助将不胜感激。感谢。

4 个答案:

答案 0 :(得分:2)

我刚刚写了一篇关于这个问题的博客,应该回答你的问题。

http://www.jht.co.uk/access-colour-color-codes/

这是代码;

Public Function HTMLColour(HTMLCode As String, Optional Red As Variant, _
Optional Green As Variant, Optional Blue As Variant) As Long
On Error GoTo HTMLColour_Error

‘Converts an HTML colour code number to a long interger
‘Also returns the constituent R,G & B components through supplied parameters

Dim intR As Integer, intG As Integer, intB As Integer
Dim strHTML As String

‘Strip # prefix if supplied
If Len(HTMLCode) < 6 Then Exit Function
strHTML = Right(HTMLCode, 6)

‘Extract R, G, B values
intR = CInt(“&H” & Mid(strHTML, 1, 2))
intG = CInt(“&H” & Mid(strHTML, 3, 2))
intB = CInt(“&H” & Mid(strHTML, 5, 2))

‘Return optional parameters
If Not IsMissing(Red) Then Red = intR
If Not IsMissing(Green) Then Green = intG
If Not IsMissing(Blue) Then Blue = intB

‘Convert RGB to Long integer
HTMLColour = RGB(intR, intG, intB)

HTMLColour_Exit:
Exit Function

HTMLColour_Error:
MsgBox Err.Description, vbExclamation, “Function HTMLColour”
Resume HTMLColour_Exit

结束功能

希望这有帮助。

答案 1 :(得分:1)

VBA中的颜色代码格式为RGB或Long,而不是HEX

在您的情况下,最简单的方法是调用一个将从HEX转换为Long的函数:

Public Function Color_Hex_To_Long(strColor As String) As Long
    Dim iRed As Integer
    Dim iGreen As Integer
    Dim iBlue As Integer

    strColor = Replace(strColor, "#", "")
    strColor = Right("000000" & strColor, 6)
    iBlue = Val("&H" & Mid(strColor, 1, 2))
    iGreen = Val("&H" & Mid(strColor, 3, 2))
    iRed = Val("&H" & Mid(strColor, 5, 2))

    Color_Hex_To_Long = RGB(iRed, iGreen, iBlue)
End Function

像这样使用:

Text1.BackColor = Color_Hex_To_Long("#ED1C24")

答案 2 :(得分:1)

只需使用OnCurrent属性来设置字体属性或其他属性。 不用输入十六进制颜色代码,而是更容易使用完全由数字组成的MS Access专有代码。做简单的方法。干杯!米奇

答案 3 :(得分:0)

对于MS_ACCESS 2016,long值似乎只是.backcolor值,使用上面的函数转换HEX工作。

我只是创建一个文本框和一个标签,在设计视图中为标签着色,并在VBA中将文本框值设置为txtBlue = lblBlue.backcolour。

我不确定在其他版本的Excel中是否会出现这种情况,但在Office 2016中似乎就是这种情况。