我正在尝试编写代码来增加字符串末尾的数字。 我想在 H 列中获取字符串"FS_CAP_1_001",并将字符串向下递增行,使其递增为"FS_CAP_1_002"、"FS_CAP_1_003"、"FS_CAP_1_004"等。 但是,我只想在字符串以"FS_CAP_1_"开头时才这样做。
我在下面写了一些代码,但是当我编译项目以调试它时,我什至无法进入该函数。
我已经阅读了这个网站上的问题"字符串末尾的增量数字",以及其他一些相关问题,但我似乎无法正确将代码放在一起。 我是 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"等。
当我编译项目以调试它时,我什至无法进入该函数。
正则表达式模式可以使用$
作为代码来查找出现在字符串末尾的模式。
如果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, "[ -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)
我能够使用以下代码使其正常工作:
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
谢谢大家的帮助!