Excel 如何编辑此VBA代码以接受不同的值?
在使此联机副本正常工作时遇到一些问题。第一个字符必须是A到Z、第二个字符1到5、第三个字符“”或0到9 框函数用于指定A1:Z53范围内的单元格 关于句法的想法Excel 如何编辑此VBA代码以接受不同的值?,excel,vba,Excel,Vba,在使此联机副本正常工作时遇到一些问题。第一个字符必须是A到Z、第二个字符1到5、第三个字符“”或0到9 框函数用于指定A1:Z53范围内的单元格 关于句法的想法 Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case Asc("0") To Asc("9") Case Asc("-") If Instr(1,Me.TextBox
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Asc("-")
If Instr(1,Me.TextBox1.Text,"-") > 0 Or Me.TextBox1.SelStart > 0 Then
KeyAscii = 0
End If
Case Asc(".")
If InStr(1, Me.TextBox1.Text, ".") > 0 Then
KeyAscii = 0
End If
Case Else
KeyAscii = 0
End Select
End Sub
谢谢,但是我得到了一个使用正则表达式的好提示。这最终成为我的应用程序的最佳解决方案。搜索后,我找到了一个以前的答案,该答案只需进行以下修改即可在此场景中工作:
.IgnoreCase = False
.Pattern = "[A-Z]([1-9]|[1-4][0-9]|[5][0-3])$"
代码可在此处找到:
VBA使用以下选项进行有限的模式匹配:
另一种选择是使用Excel intersect方法(也适用于例如“
$Z$53
”):
或Excel:
Excel对话框可用于选择范围
IsInRange = text Like "[A-Z][1-9]" Or text Like "[A-Z][1-4][0-9]" Or text Like "[A-Z]5[0-3]"
IsInRange = Not Intersect([A1:Z53], Range(text)) Is Nothing
IsInRange = Not Evaluate("ISERR(A1:Z53 " & text & ")")