VB6 英数字の伝票番号加算プログラム

はてな記法の、スーパーpre記法(シンタックス・ハイライト)が使ってみたかったので、今日書いたコードを貼り付けてみました。


伝票番号みたいに、TR00678みたいな、英字と数字の組み合わせにおいて、数字だけを加算したかったので、コードを書いてみました。Accessなので、VBAで書いています。


Access 2007になっても、VB6と一緒で、.netフレームワークではないんですよね。
VBAのマクロユーザー向けなのでしょうね。


DenpyoNumberAdderの引数に、伝票番号と、変化量を渡します。

Public Function DenpyoNumberAdder _
        (OldDenpyoNumber As String, AddNum As Integer) As String
    
    Dim OldNumber As Integer
    Dim NewNumber As Integer
    Dim Results As String
    
    OldNumber = Val(DivNumber(OldDenpyoNumber))
    NewNumber = OldNumber + AddNum
    
    Results = DivAlpha(OldDenpyoNumber) & _
              Val(ZeroAdder(NewNumber, Len(str(OldNumber))))

    DenpyoNumberAdder = Results

End Function
Private Function DivNumber(str As String) As String
    Dim i As Integer
    
    DivNumber = ""
    
    If str <> "" Then
        Dim objRE
        Set objRE = CreateObject("VBScript.RegExp")
        objRE.IgnoreCase = True
        objRE.pattern = "[0-9]"
        
        For i = Len(str) To 1 Step -1
            If objRE.Test(Mid(str, i, 1)) Then
                DivNumber = Mid(str, i, 1) & DivNumber
            Else
                Exit For
            End If
        Next i
        Set objRE = Nothing
    End If
End Function
Private Function DivAlpha(str As String) As String
    Dim i As Integer
    
    DivAlpha = ""
    
    If str <> "" Then
        Dim objRE
        Set objRE = CreateObject("VBScript.RegExp")
        objRE.IgnoreCase = True
        objRE.pattern = "[A-Za-z]"
        
        For i = 1 To Len(str) - 1
            If objRE.Test(Mid(str, i, 1)) Then
                DivAlpha = DivAlpha & Mid(str, i, 1)
            Else
                Exit For
            End If
        Next i
        Set objRE = Nothing
    End If
End Function

コメントすらないと、分かりませんね。
時間があれば、考えます。