我希望用户只在 excel 单元格中输入字符。我在 excel 的自定义公式中使用了 ISTEXT(value),但无法为像 hgdashj2132154这样的字符串获得正确的输出,请帮助...谢谢你..
问问题
3892 次
3 回答
3
它只需要一点正则表达式的魔力。您需要一个用户定义的函数和正则表达式插件。在开发人员视图中,转到工具|参考并勾选 Microsoft VBScript 正则表达式 5.5。
这是功能:
Public Function isOnlyAlpha(myText) As Boolean
Dim regEx
Set regEx = New RegExp 'Regular expression object
regEx.Pattern = "^[a-zA-Z]*$" ' Set pattern.
isOnlyAlpha = regEx.Test(myText) ' Test for match
End Function
结果:
=isOnlyAlpha("hgdashj2132154")
False
=isOnlyAlpha("hgdashj")
True
如果您宁愿不使用正则表达式,总有“Like Loop”:
Public Function IsOnlyAlpha(Value As String) As Boolean
IsOnlyAlpha = True
Dim i As Integer
For i = 1 To Len(Value)
IsOnlyAlpha = IsOnlyAlpha And (Mid(Value, i, 1) Like "[A-Za-z]")
Next i
End Function
于 2011-01-06T01:55:05.020 回答
2
Smack,我在我的书签网站上找到了这个。它与 Marc Thibault 的建议本质上是相同的概念,但不需要任何额外的参考:
于 2011-01-06T13:57:58.723 回答
1
纯 VBA 方法:
(我编辑了我的答案以使用 Like 运算符而不是 IsNumeric 函数。现在只有字符 a 到 z 被认为是有效的,而不仅仅是非数字字符。)
Public Function IsOnlyAlpha(Value As String) As Boolean
If Len(Value) = 0 Then
IsOnlyAlpha = False
Exit Function
End If
Dim i As Integer
For i = 1 To Len(Value)
If Not Mid(Value, i, 1) Like "[A-Za-z]" Then
IsOnlyAlpha = False
Exit Function
End If
Next i
IsOnlyAlpha = True
End Function
于 2011-01-07T01:16:34.893 回答