我这里有示例代码,说明如何自动增加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的基础?
答案 0 :(得分:1)
这就是我编写此任务的方式:仅取最后使用的并添加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
答案 1 :(得分:0)
更改
ws.Cells(nRow, "A").Value = "ABC-00" & nRow & ""
到
ws.Cells(nRow, "A").Value = "ABC-00" & (nRow - 1)
答案 2 :(得分:0)
第一个答案是手机。 您的“ nRow”是原始数字加一。因此,您必须再次减去1。 为了获得正确的结果,您必须将数字设置为3位数字。如果您的年龄在10岁以上和100岁以上,则可以分辨出差异。 只需将字符(00和1)连接起来,以后将得到不同的结果。
ws.Cells(nRow, "A").Value = "ABC-" & Format(nRow - 1, "000")