2016-11-14 86 views
2

我在设置Access数据库中文本框的背景颜色时遇到问题。我想在满足特定条件时将颜色更改为红色。在VBA中设置访问颜色代码

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

但是,当我把这个值到我的VBA代码(Text1.Backcolor =“#ED1C24”),我得到一个类型不匹配的错误。

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

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

+0

的可能的复制[?我如何在Excel/VBA RGB颜色的对应的十六进制值(http://stackoverflow.com/questions/6003324/how-do-i-得到最相应 - 己值的-AN-RGB色-在-E xcel-vba) – Andre

回答

1

在VBA颜色代码格式为RGB或龙,而不是HEX

在你的情况下,最简单的方法是调用将从十六进制转换为长的函数:

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") 
1

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

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 

端功能

希望这有助于。

+0

这很棒,非常感谢 –

+0

一个潜在的解决方案的链接永远是受欢迎的,但请[在链接周围添加上下文](http://meta.stackoverflow.com/a/8259/169503),所以你的家伙用户会有一些想法是什么以及它为什么在那里。如果目标网站无法访问或永久离线,请始终引用重要链接中最相关的部分。考虑到_barely不仅仅是一个链接到外部网站_是一个可能的原因[为什么和如何删除一些答案?](http://stackoverflow.com/help/deleted-answers)。 –