字符串中的通配符

Wildcard in String

我在通过 VBA 表单创建的 Excel 电子表格的单元格中有一个字符串。
在表格的开发过程中,我们有三个唯一代码(MIC-CT-xxx、MIC-ET-xxx 和 MIC-UT-xxx)。
我有一个正在运行的功能。现在我需要根据最后一个值搜索 LastNo。

Public Function UniqueID()

LastID = xTracker.Range("B" & tRow).Value
LastNo = CLng(Replace(LastID, "MIC-*-", ""))

If Me.CB_CType.Value = "Create" Then
    NewID = "MIC-CT-" & Format(LastNo + 1, "000")

ElseIf Me.CB_CType.Value = "Edit" Then
    NewID = "MIC-ET-" & Format(LastNo + 1, "000")

ElseIf Me.CB_CType.Value = "Update" Then
    NewID = "MIC-UT-" & Format(LastNo + 1, "000")

End If
End Function

我可以通过 If 进行搜索,但想知道是否有一种方法可以在文本字符串中插入通配符来查找 MIC-*-xxx 而不是完整的字符串。

终于找到了有效的方法。可能不是最好的方法,但有效!!

Public Function UniqueID()

LastID = xTracker.Range("B" & tRow).Value

Dim Str As String
Str = Left(LastID, 7)

LastNo = CLng(Replace(LastID, Str, ""))

If Me.CB_CType.Value = "Create" Then
NewID = "MIC-CT-" & Format(LastNo + 1, "000")

ElseIf Me.CB_CType.Value = "Edit" Then
NewID = "MIC-ET-" & Format(LastNo + 1, "000")

ElseIf Me.CB_CType.Value = "Update" Then
NewID = "MIC-UT-" & Format(LastNo + 1, "000")

End If

End Function

正如我在问题评论中提到的,我建议使用正则表达式。 return LastNo 的方法可能如下所示:

Private Function GetLastNo(sKey As String) As Long
    Dim pattern As String, sTmp As String
    Dim r As RegExp
    
    On Error GoTo Err_GetLastNo
    
    sTmp = 1
    pattern = "[A-Z]{3}-[A-Z]{2}-"
    Set r = New RegExp
    r.pattern = pattern
    sTmp = r.Replace(sKey, "")
    
    GetLastNo = CLng(sTmp)
    
Exit_GetLastNo:
    On Error Resume Next
    Set r = Nothing
    Exit Function
    
Err_GetLastNo:
    MsgBox Err.Description, vbExclamation, Err.Number
    Resume Exit_GetLastNo
End Function

用法:

Public Function GetUniqueID(LastID As String) As String
    Dim pre As String, LastNo As Long
    LastNo = GetLastNo(LastID) + 1
    
    Select Case Me.CB_CType.Value
        Case "Create"
            pre = "MIC-CT-"
        Case "Edit"
            pre = "MIC-ET-"
        Case "Update"
            pre = "MIC-UT-"
    End Select

    GetUniqueID = pre & Format(LastNo, "000")

End Function

注意:不要忘记添加对 MS VBScript Regular Expression 5.5 库的引用!更多信息:VBA Regex

祝你好运!