gpt4 book ai didi

vba - 如何检查字符串是否只包含字母?

转载 作者:行者123 更新时间:2023-12-02 00:44:39 24 4
gpt4 key购买 nike

我正在使用一个函数,该函数允许我查看文本字符串并评估它是否由字母组成。它位于一个名为“General”的模块中。通用模块仅用于容纳公共(public)函数和变量。功能代码如下:

Public Function IsAlpha(strValue As String) As Boolean
Dim intPos As Integer

For intPos = 1 To Len(strValue)
Select Case Asc(Mid(strValue, intPos, 1))
Case 65 To 90, 97 To 122
IsLetter = True
Case Else
IsLetter = False
Exit For
End Select
Next
End Function

接下来,我有两个“if”例程,用于评估用户表单中文本框的前 2 个字符。第一个例程询问第一个字符是否为数字,第二个例程询问第二个字符是否为字母。目前,当 IsAlpha 测试 True 时,第二个“if”例程将我从子例程中弹出,而不是生成 MsgBox。 IsAlpha 函数没有被正确调用吗?

如果例程代码如下:

Private Sub CmdMap_Click()

With TxtDxCode
If IsNumeric(Left(Me.TxtDxCode.Text, 1)) Then
MsgBox "Incorrect DX Code format was entered. ", vbExclamation, "DX Code Entry"
TxtDxCode.Value = ""
TxtDxCode.SetFocus
Exit Sub
End If

If IsAlpha(Left(Me.TxtDxCode.Text, 2)) Then
MsgBox "Incorrect DX Code format was entered. ", vbExclamation, "DX Code Entry"
TxtDxCode.Value = ""
TxtDxCode.SetFocus
Exit Sub
End If
End With

最佳答案

为什么不使用正则表达式呢?那么就不涉及循环了:

Public Function IsAlpha(strValue As String) As Boolean
IsAlpha = strValue Like WorksheetFunction.Rept("[a-zA-Z]", Len(strValue))
End Function

此外,当您创建用户定义函数 (UDF) 时,您需要确保将返回值分配给实际函数的名称,在本例中为 IsAlpha - 而不是 IsLetter 否则该值将永远不会被传回。

关于vba - 如何检查字符串是否只包含字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29633517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com