重复条目的预防措施VBA Excel

我有一个用户窗体,将新项目添加到我的清单。

我想寻求帮助,如果我可以使我的产品像主键。 这样“产品密钥”不能被复制。 任何帮助将深表谢意。

我的代码如下链接(似乎不能粘贴我的代码在这个盒子里,因为我不断收到一个错误,说我的代码格式不正确) 抱歉造成不便 : http : //imgur.com/7xFDawO

Option Explicit Private Sub cmdAdd_Click() Dim row As Long Do row = row + 1 Loop Until (Sheets("Inventory").Cells(row, 1) = "") Sheets("Inventory").Select Sheets("Inventory").Cells(row, 1) = txtProdCodeAI.Value Sheets("Inventory").Cells(row, 2) = txtProdNameAI.Value Sheets("Inventory").Cells(row, 3) = txtQuantityAI.Value Sheets("Inventory").Cells(row, 4) = txtSupplierAI.Value Sheets("Inventory").Cells(row, 5) = txtSupplierNumberAI.Value End Sub Private Sub cmdCancel_Click() Unload AddInventory End Sub 

PS代码已添加到链接中的图片说明,但未正确格式化

**

  • 编辑

**

用户通过文本框input产品代码,产品名称,数量,供应商(名称)和供应商联系电话号码。

主键在列A上,并从第2行开始,因为有一个标题。

工作表名称是“库存”。

如果input了相同的主键,则会出现错误popup窗口“vbokonly – 错误!产品代码已经存在,请使用更新function”。

只需检查列A中的值:

 txtProdCodeAI.Value 

像这样:

 Dim keyExists as Boolean keyExists = Not Range("A1:A" & row).Find(txtProdCodeAI.Value) Is Nothing If keyExists Then MsgBox txtProdCodeAI.Value & " already exists!", vbCritical Exit Sub End If 

把它放在你的代码中,如下所示:

 Private Sub cmdAdd_Click() Dim row As Long Dim keyExists as Boolean Do row = row + 1 Loop Until (Sheets("Inventory").Cells(row, 1) = "") keyExists = Not Sheets("Inventory").Range("A1:A" & row).Find(txtProdCodeAI.Value) Is Nothing If keyExists Then MsgBox txtProdCodeAI.Value & " already exists!", vbCritical Exit Sub End If Sheets("Inventory").Select Sheets("Inventory").Cells(row, 1) = txtProdCodeAI.Value Sheets("Inventory").Cells(row, 2) = txtProdNameAI.Value Sheets("Inventory").Cells(row, 3) = txtQuantityAI.Value Sheets("Inventory").Cells(row, 4) = txtSupplierAI.Value Sheets("Inventory").Cells(row, 5) = txtSupplierNumberAI.Value End Sub 

在excel中的其他解决scheme,你可以在整个列中使用validation格式,在列中select整个列并转到数据选项卡 > 数据validation >,在那里:

在这里输入图像说明

这将限制你input的所有值(类似的scheme作为主键,没有愚蠢),但是它会提示一个错误(因为你不能input重复的值),所以在你的周期中,你需要添加一个像这样的error handling程序( 未经testing

 On Error GoTo ErrorHandler Sheets("Inventory").Select Sheets("Inventory").Cells(row, 1) = txtProdCodeAI.Value Sheets("Inventory").Cells(row, 2) = txtProdNameAI.Value Sheets("Inventory").Cells(row, 3) = txtQuantityAI.Value Sheets("Inventory").Cells(row, 4) = txtSupplierAI.Value Sheets("Inventory").Cells(row, 5) = txtSupplierNumberAI.Value Exit Sub ErrorHandler: MsgBox "This Product Code" & txtProdCodeAI.Value & "is a duplicate" Resume Next