我需要检查一个字符串,看看是否有一个长度超过或少于4个字符的数字引用。
以下是一些可能在字符串中的数字示例:
因此,选择数字并检查它是否超过999且小于或等于9999并不容易,因为数字可以从0开始。
以下是可以存储在字符串
中的数据示例以下是返回有效和无效
的一些示例0324 TRUE
39234 FALSE
2393 TRUE
192 FALSE
由于分离数据没有固定的困境,我不确定如何将数字与字符串分开。
我最初的想法是只提取数字并用空格替换所有其他数字。然后使用空间作为困境。如果字符串为空,则跳过该字符进行检查,但如果它包含值,则检查字符串的长度是否为4个字符。
欢迎所有解决方案或想法
答案 0 :(得分:1)
Function CheckNumbers(ByVal s As String) As Boolean
s = " " & s & " "
CheckNumbers = Not s Like "*#####*" _
And Not s Like "*[!0-9]###[!0-9]*" _
And Not s Like "*[!0-9]##[!0-9]*" _
And Not s Like "*[!0-9]#[!0-9]*"
End Function
https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/like-operator
答案 1 :(得分:1)
假设选择了字符串,您可以使用以下代码:
Sub Demo()
Dim StrData As String, StrTmp As String, i As Long
With Selection
If InStr(.Text, vbCr) Then
.Collapse wdCollapseStart
.MoveEndUntil vbCr, wdForward
End If
StrTmp = Replace(Replace(Replace(Replace(Split(.Text, vbLf)(0), vbTab, " "), "/", " "), ",", " "), " ", " ")
For i = 1 To UBound(Split(StrTmp, " "))
StrData = Split(StrTmp, " ")(i)
If IsNumeric(StrData) Then
If Len(Split(StrTmp, " ")(i)) <> 4 Then
.InsertAfter " Invalid": Exit For
End If
End If
Next
End With
End Sub
如果已编码,则宏在字符串后面插入“无效”,如果它包含超出范围的数字。