我正在尝试编写代码以增加字符串末尾的数字。我想在H列中使用字符串“ FS_CAP_1_001”,并在各行中递增该字符串,以使其递增为“ FS_CAP_1_002”,“ FS_CAP_1_003”,“ FS_CAP_1_004”等。但是,我只想在字符串以“ FS_CAP_1_”开头。
我在下面编写了一些代码,但是在编译项目以对其进行调试时,我什至无法进入该函数。
我已经在该网站上阅读了“字符串末尾的增量数”问题,以及其他一些相关问题,我似乎无法正确地将代码组合在一起。我是VBA的初学者,距离我用VBA编写任何代码已经至少一年了。
Function NumberIncrement_CapCode_Tier1_Lvl1(ByVal txt As String) As String
With Worksheets("PD Code Structure")
Dim i As Integer
Dim myVal As Integer
Dim cell As Range
For Each cell In Worksheets("PD Code Structure").Range(Cells(i, 8))
txt = cell.Value
myVal = Val(Split(txt, "_")(1)) + 1
NumberIncrement_CapCode_Tier1_Lvl1 = Split(txt, "_")(0) & "_" & Format(myVal, "000")
Next cell
End With
End Function
我的预期结果是“ H”列中的每一行,其中字符串以“ FS_CAP_1_”开头,随后的行将递增以显示“ FS_CAP_1_002”,“ FS_CAP_1_003”,“ FS_CAP_1_004”等。
在编译项目进行调试时,我什至无法进入该功能。
答案 0 :(得分:0)
正则表达式模式可以使用$
作为代码来查找模式,该模式出现在字符串的末尾。
如果FS_CAP_1_
部分是动态的,您可能希望使用仅处理字符串末尾数字的内容。
Function myIncrement(str As String, _
Optional z As Integer = 3) As String
Dim rgx As Object, inc1 As String
Set rgx = CreateObject("vbscript.regexp")
With rgx
.Pattern = Format(z, "\[\0\-9\]{0}$")
If .test(str) Then
inc1 = .Execute(str)(0)
myIncrement = Left(str, Len(str) - z) & Format(CLng(inc1) + 1, String(z, "0"))
End If
End With
End Function
在A3中,您可以通过在A2中引用FS_CAP_1_001来使用它。
=myIncrement(A2)
答案 1 :(得分:0)
我能够使用以下代码正常工作:
Sub NumberIncrement()
With Worksheets("PD Code Structure")
Dim i As Integer
Dim cell As Range
i = 1
For Each cell In .Range("H2: H1006")
If InStr(cell.Value, "FS_CAP_1_") Then
cell.Value = cell.Value & Format(i, "000")
i = i + 1
End If
Next cell
End With
End Sub
谢谢大家的帮助!