[英]Excel VBA: Auto Increment ID Number inside of Text
我这里有示例代码,说明如何自动增加ID号和程序的示例输出
Sub AddData()
Dim ws As Worksheet 'define worksheet
Set ws = ThisWorkbook.Worksheets("Sheet3")
Dim Deadline As Range 'define deadline range
Set Deadline = ws.Range("H1")
Dim Submitted As Range 'define submitted range
Set Submitted = ws.Range("H3")
Dim nRow As Long 'find next free row = last used used row +1
nRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1
ws.Cells(nRow, "A").Value = "ABC-00" & nRow & ""
ws.Cells(nRow, "B").Value = Deadline.Value
ws.Cells(nRow, "C").Value = Submitted.Value
End Sub
如您所见,我有3个不同的字段。 ID,截止日期,已提交
每当我输入截止日期和提交字段的新记录时,该ID应根据最后插入的ID自动增加。
如您所见,第一个ID是ABC-001,它突然跳入ABC-003,而不是ABC-002。
我想可能是因为它紧随数据的行号,这就是为什么在ABC-001之后它显示为ABC-003,因为此ID号是第3行
有什么方法可以获取最后插入的ID,并作为生成新ID的基础?
这就是我编写此任务的方式:仅取最后使用的并添加1。
Sub AddData()
Dim Ws As Worksheet
Dim AbcID As Range
Dim Deadline As Range
Dim Submitted As Range
Dim AbcNum As Integer
Set Ws = ThisWorkbook.Worksheets("Sheet3") 'define worksheet
With Ws
Set AbcID = .Cells(.Rows.Count, "A").End(xlUp) 'last used
Set Deadline = .Range("H1") 'define deadline cell
Set Submitted = .Range("H3") 'define submitted cell
End With
With AbcID
If .Row > 1 Then AbcNum = Val(.Value)
Set AbcID = .Offset(1)
End With
With AbcID
.Value = AbcNum + 1
.NumberFormat = """ABC""" & "-000"
.Offset(0, 1).Value = Deadline.Value
.Offset(0, 2).Value = Submitted.Value
End With
End Sub
更改
ws.Cells(nRow, "A").Value = "ABC-00" & nRow & ""
至
ws.Cells(nRow, "A").Value = "ABC-00" & (nRow - 1)
第一个答案是手机。 您的“ nRow”是原始数字加一。 因此,您必须再次减去1。 为了获得正确的结果,您必须将数字设置为3位数字。 如果您的年龄在10岁以上和100岁以上,则可以分辨出差异。 只需将字符(00和1)连接起来,以后将得到不同的结果。
ws.Cells(nRow, "A").Value = "ABC-" & Format(nRow - 1, "000")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.