有没有一种方法可以在UserForms上自动增加ID

时间:2019-08-14 09:26:32

标签: excel vba

我正在为销售线索创建数据条目UserForm(对于VBA来说是新的)。收集的所有数据都将写成“铅数据”工作表。

每条线索都需要一个唯一的LeadID。这需要填充在用户窗体的文本框中,并与所有其他信息一起写到ID列中的"Lead Data"中。

我正在努力寻找一种方法

  1. 查找“铅数据”上使用的最后一个ID,如果已经不存在,则设置为1。

  2. 为此添加1并将TextBox的值设置为此值

我已经在各个论坛上进行了一些挖掘,并建议使用以下代码,但这未引用“铅数据”

对于这应该在“表单激活”事件还是“初始化”上,我也不清楚。

Private Sub UserForm_Activate()

 Dim LstRw As Long

 LstRw = .Cells(Rows.Count, "I").End(xlUp).Row

 Col.A after adding 1 to it.
 Me.tbLeadID.Value = .Cells(LstRw, "I").Value + 1

End Sub

3 个答案:

答案 0 :(得分:0)

您可以通过参考目标工作表来尝试此操作

Private Sub UserForm_Activate()

 Dim LstRw As Long

 LstRw = ThisWorkbook.Sheets("Lead Data").Cells(Rows.Count, "I").End(xlUp).Row

' Col.A after adding 1 to it.
 Me.tbLeadID.Value = ThisWorkbook.Sheets("Lead Data").Cells(LstRw, "I").Value + 1

End Sub 

答案 1 :(得分:0)

它应该在Initialize上,否则,如果您转开然后再次返回,它将增加。亲自 !会使用Max()在存储ID的任何列中找到最大值。如果那是A列,那么我会写

Private Sub UserForm_Initialize()
Me.TxtLeadID = Application.WorksheetFunction.Max(ThisWorkbook.Worksheets(1).Range("A:A")) + 1

End Sub

答案 2 :(得分:0)

感谢您的建议,这使我的理解向前发展。

我实际上走了一个略有不同的方向,并暂时解决了这个问题。

我已经在一个参考工作表上记录了一个NextID字段。

在初始化时将其拉回到用户窗体上。

tbLeadID.Value = ThisWorkbook.Worksheets("OtherRefData").Range("H2").Value

然后使用“保存”按钮保存用户表单时

ThisWorkbook.Worksheets("OtherRefData").Range("H2").Value = 
ThisWorkbook.Worksheets("OtherRefData").Range("H2").Value + 1

欢迎对此进行反馈!