Function AddNum(sName)
Dim cMatch, iPos, iNum, jFig
Const iAdd = 1 '加算値
Const iFig = 0 '桁 0:桁保持 1〜:桁指定
With regEx
.Pattern = "\d+" 'マッチパターン
.Global = True '全体を検索する {True|False}
Set cMatch = .Execute(sName)
End With
If cMatch.Count = 0 Then
AddNum = sName
Else
iPos = 0 '最初にマッチしたものに加算
'iPos = cMatch.Count - 1 '最後にマッチしたものに加算
With cMatch(iPos)
iNum = .Value + iAdd
If iFig = 0 Then jFig = .Length - (Len(iNum) > .Length) Else jFig = iFig
AddNum = Left(sName, .FirstIndex) & _
Right(String(jFig, "0") & iNum, jFig) & _
Mid(sName, .FirstIndex + .Length + 1)
End With
End If
End Function
桁の指定も出来るようにしてみました。
iAdd = 0 iFig = 5 とすれば、数値はそのままで、
桁だけ揃えることもできます。
1 → 00001
10 → 00010
0100 → 00100
但し、既存の桁より小さい桁数を指定すると、
指定桁以上は切られるので注意。