はてな記法の、スーパー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
コメントすらないと、分かりませんね。
時間があれば、考えます。