如何通知用户他们创建了重复记录,并询问他们是不是要覆盖?
Posted
技术标签:
【中文标题】如何通知用户他们创建了重复记录,并询问他们是不是要覆盖?【英文标题】:How to inform user they have created a duplicate record, and ask if they want to overwrite?如何通知用户他们创建了重复记录,并询问他们是否要覆盖? 【发布时间】:2021-10-13 09:21:00 【问题描述】:我有一个工作簿并创建了命令按钮。我已经成功地为 2 个按钮创建了 VBA,但我正在为重复代码而苦苦挣扎。我正在将数据从工作表中的特定单元格传输到名为“主”的工作表上,我的文件是通过保存命令自动创建的,该命令将工作表自动保存为发票 (c10),然后是项目参考 (a12)。我正在尝试将代码写入我现有的 VBA 以告诉我正在添加重复项,并询问我是否要覆盖它?
这是我已经走了多远,我花了几个小时在重复功能上,试图纠正它,但我一直摔倒。除(“C10”)外,该行中允许所有其他重复项。我只是无法为我完成这项工作。 请问有人可以帮忙吗?
Dim Item As Range, DataEntry As Range
Dim Data() As Variant
Dim i As Integer
Dim DataRow As Long
Dim wsMaster As Worksheet
Set wsMaster = ThisWorkbook.Worksheets("Master")
Set DataEntry = ActiveSheet.Range("C10,A3,A12,E10,F33")
Dim assetIDRange, a As Range
For Each Item In DataEntry
i = i + 1
ReDim Preserve Data(1 To i)
Data(i) = Item.Value
Next
DataRow = wsMaster.Cells(wsMaster.Rows.Count, "A").End(xlUp).Row + 1
wsMaster.Cells(DataRow, 1).Resize(1, DataEntry.Cells.Count).Value = Data
MsgBox "Record Added To Master", 48, "Record Added"
End Sub
【问题讨论】:
要检查哪个条目?对照什么检查什么? 听起来你可以使用数据库,至少像 MS Access。 嗨,HackSlash,我同意,但不幸的是,我的笔记本电脑上还没有这个功能(还没有)......在老板身上工作。 【参考方案1】:试试这样的:
Sub InsertUpdate()
Dim Item As Range, DataEntry As Range
Dim Data() As Variant
Dim i As Integer
Dim wsMaster As Worksheet
Dim m, c As Range, action
Set wsMaster = ThisWorkbook.Worksheets("Master")
Set DataEntry = ActiveSheet.Range("C10,A3,A12,E10,F33")
ReDim Data(1 To 1, 1 To DataEntry.Cells.Count)
For Each Item In DataEntry.Cells
i = i + 1
Data(1, i) = Item.Value
Next
'existing row with same C10 value?
m = Application.Match(Data(1, 1), wsMaster.Columns("a"), 0)
If Not IsError(m) Then 'found existing match?
If MsgBox("Replace existing entry for '" & Data(1, 1) & "' ?", vbQuestion + vbYesNo) = vbYes Then
Set c = wsMaster.Columns("a").Cells(m)
action = "Updated"
End If
Else
Set c = wsMaster.Cells(wsMaster.Rows.Count, "A").End(xlUp).Offset(1, 0)
action = "Added"
End If
If Not c Is Nothing Then
c.Resize(1, UBound(Data, 2)).Value = Data
MsgBox "Record " & action & " To Master", 48, "Record Added"
End If
End Sub
【讨论】:
为什么要检查Data(1, 1)
?
非常感谢,现在一切正常!我已经在这几天了。
@FaneDuru - 来自原始问题:“除了(“C10”)之外,允许行中的所有其他重复项。” C10 的值在Data(1,1)
@Narkyknickers 你只需要检查“C10”中的值吗?
显然,我的英语太差了,无法理解“将工作表自动保存为发票(c10)然后项目参考(a12)”......以上是关于如何通知用户他们创建了重复记录,并询问他们是不是要覆盖?的主要内容,如果未能解决你的问题,请参考以下文章
如何确定用户是不是尚未注册接收推送通知和/或他们的设置是不是被禁用