VBA-如何检查字符串是否为有效的十六进制颜色代码?

已锁定

为防止错误,我需要检查从自定义输入框中检索的字符串是否不是有效的十六进制颜色代码。到目前为止,我发现了其他语言的各种解决方案,但VBA却找不到。

处理以下代码,输入不为十六进制的值将导致运行时错误。这对我的项目至关重要,因为我正在保护纸上工作。

Public Function HexWindow(MyCell As String, Description As String, Caption As String)
    Dim myValue As Variant
    Dim priorValue As Variant
    priorValue = Range(MyCell).Value
    myValue = InputBox(Description, Caption, Range(MyCell).Value)
    Range(MyCell).Value = myValue
    If myValue = Empty Then
        Range(MyCell).Value = priorValue
    End If
    tHex = Mid(Range(MyCell).Text, 6, 2) & Mid(Range(MyCell).Text, 4, 2) & Mid(Range(MyCell).Text, 2, 2)
    Range(MyCell).Interior.Color = WorksheetFunction.Hex2Dec(tHex)
End Function

在任何情况下,如何设置一个条件来识别非0到9的“#”和6个字符格式的值?

共产国际

几种方法可以做到这一点。最简单的方法是使用正则表达式:

'Requires reference to Microsoft VBScript Regular Expressions x.x
Private Function IsHex(inValue As String) As Boolean
    With New RegExp
        .Pattern = "^#[0-9A-F]{1,6}$"
        .IgnoreCase = True                'Optional depending on your requirement
        IsHex = .Test(inValue)
    End With
End Function

如果由于某种原因对您不利,您还可以利用VBA允许的十六进制字符串强制转换为数字:

Private Function IsHex(ByVal inValue As String) As Boolean
    If Left$(inValue, 1) <> "#" Then Exit Function
    inValue = Replace$(inValue, "#", "&H")
    On Error Resume Next
    Dim hexValue As Long
    hexValue = CLng(inValue)  'Type mismatch if not a number.
    If Err.Number = 0 And hexValue < 16 ^ 6 Then
        IsHex = True
    End If
End Function

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Excel VBA中检查字符串是否为有效的HHMMSS值?

如何检查字符串是否是有效的十六进制颜色表示形式?

C ++:检查字符串是否为有效的MD5十六进制哈希

检查字符串是否有效表示十六进制数字

我们如何有效地检查Python中字符串是否为十六进制

检查字符串是否为十六进制

如何检查字符串VBA中是否存在“ \”?

如何在查询中检查字符串“ green”是否为有效颜色?

如何从短字符串中获取颜色代码的十六进制字符

VBA - 检查字符串中是否存在“逗号”

Javascript-检查字符串是否为有效的CSS颜色?

在Excel VBA中将字符串转换为十六进制

将十六进制字符串转换为无符号INT(VBA)

如何检查字符串在VBScript中是否包含十六进制值?

将字符串中的十六进制颜色代码替换为彩色 html 标签

Swift:将字符串转换为十六进制颜色代码

计算任意字符串的十六进制颜色代码

如何检查字符串是否为有效的HTTP URL?

如何检查字符串是否为图片的有效URL?

java-如何检查字符串是否为有效的XML元素名称?

如何在Python中检查字符串是否为有效的JSON?

如何检查字符串是否为有效整数?

如何检查字符串是否为有效的GUID?

如何检查字符串是否为有效查询

如何在 Stanza 中检查字符串是否为有效整数?

VBA比较字符串(检查字符串一是否包含字符串2)

如何检查字符串是否在工作表中*两次* Excel VBA中出现?

没有空格的VBA字符串无效,带有空格的VBA字符串有效

将十六进制字节组合成VBA中的字符串,而不会丢失前导零?