如何将输入框中的用户输入限制为字母,数字和字符' - '? 我尝试了以下代码。
For I = 1 To Len(UserInput)
If VBA.Asc(VBA.Mid(UserInput, I, 1)) >= 65 And VBA.Asc(VBA.Mid(UserInput, I, 1)) <= 90 Or VBA.Asc(VBA.Mid(UserInput, I, 1)) >= 0 And VBA.Asc(VBA.Mid(UserInput, I, 1)) <= 9 Or VBA.Asc(VBA.Mid(UserInput, I, 1)) = 45
Then
IsNumeric (UserInput)
UserInput = Cells(Row, 7).Value
Else
MsgBox ("Invalid Entry")
End If
Next I
我看到应用程序定义或对象定义错误。谁能请你帮忙。
答案 0 :(得分:0)
在我看来,你得到的ASCII码范围不正确。数字从48到57,小字符在65到90之间,大写字母在97到122之间。连字符在45的代码中是正确的。
'\0'
此外,您缺少一些括号以确保范围(在48和57之间)或(下一个范围)或(下一个范围)或是连字符(代码45)。
答案 1 :(得分:0)
这2个功能应该做你需要的一切:
Public Function textCheck(ByVal UserInput As String) As Boolean
Dim i As Long
While Len(UserInput)
Select Case Asc(Left(UserInput, 1))
Case 45, 48 To 57, 65 To 90, 97 To 122
UserInput = Mid(UserInput, 2)
Case Else
Exit Function
End Select
Wend
textCheck = True
End Function
Public Function textChange(ByVal UserInput As String) As String
Dim str As String
While Len(UserInput)
Select Case Asc(Left(UserInput, 1))
Case 45, 48 To 57, 65 To 90, 97 To 122
textChange = textChange & Left(UserInput, 1)
End Select
UserInput = Mid(UserInput, 2)
Wend
End Function
如果字符串中没有“forbitten”字符,则第一个只返回true
,否则为false
。
第二个函数返回一个字符串,其中所有“forbitten”字符都被删除。
如果您有任何疑问,请询问(此代码应该很容易让每个人都可读);)
答案 2 :(得分:0)
我必须在do-while循环中修复一个小错误。它使用下面的代码。
Do
UserInput1 = Application.InputBox("EnterShelf Number")
For j = 1 To Len(UserInput1)
Select Case Asc(Mid(UserInput1, j, 1))
Case 48 To 57
Cells(Row, 8).Select
ActiveCell.Formula = UserInput1
cnt1 = 0
Case Else
cnt1 = 1
MsgBox ("Invalid Entry")
End Select
Next
Loop While cnt1 <> 0
答案 3 :(得分:0)
regexp避免逐个字符循环。
测试字符串
Sub TextVal()
Debug.Print blStrCheck("abcdADDD-129")
Debug.Print blStrCheck("abcdADDD-129")
Debug.Print blStrCheck("123")
Debug.Print blStrCheck("abcdACBC")
Debug.Print blStrCheck("-")
End Sub
功能
Function blStrCheck(strIn As String) As Boolean
Dim objRegex As Object
Set objRegex = CreateObject("vbscript.regexp")
objRegex.ignorecase = True
objRegex.Pattern = "[/d-]"
blStrCheck = objRegex.test(strIn)
End Function