Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何编辑此VBA代码以接受不同的值?_Excel_Vba - Fatal编程技术网

Excel 如何编辑此VBA代码以接受不同的值?

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

在使此联机副本正常工作时遇到一些问题。第一个字符必须是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.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 & ")")