繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM