Excel VBA:文本内的自动增量ID号

时间:2019-01-12 08:46:24

标签: excel vba

我这里有示例代码,说明如何自动增加ID号和程序的示例输出

enter image description here

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的基础?

3 个答案:

答案 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")