了解如何创建一个 VBA 函数,使您只需单击一个按钮即可从以前的记录中复制某些数据。 无需重复输入相同的内容。
您是否有过这样的经历:您需要在 Access 中输入一条新记录,该记录除了一个字段外与以前的记录具有完全相同的一组值? 这可能很累,对吧? 本教程将教您如何创建一个函数,只需单击一个按钮,您就可以复制先前记录的某些值——节省您重新输入的时间。 只需按照以下步骤操作。
立即下载
如果您想尽快开始使用此功能,您可以:
否则,如果你想DIY,你可以阅读下面的内容。
在 Access 中添加“创建记录副本”功能的步骤
- 在设计视图中打开您的窗体。

- 添加命令按钮。 跳过命令按钮向导。
- 添加一个 点击时 按钮的事件。
- 在设计视图中,选择按钮。
- 打开属性表 (ALT + Enter)
- 转到“事件”选项卡>“单击”> ...
- 当。。。的时候 选择建造者 弹出菜单,选择代码生成器。
- 单击“确定”。
- 这将打开 VBA 编辑器。
-
- 复制以下代码并修改它以满足您的需要。 使用评论作为指导。
Private Sub Command24_Click() Dim currentID As Long 'TO DO: change all instances of 'BookID' with the actual name of your table's ID or primary key If IsNull(BookID) Then MsgBox prompt:="Please select the record to copy first.", buttons:=vbExclamation Exit Sub End If currentID = BookID DoCmd.GoToRecord record:=acNewRec 'TO DO: set the fields to be copied (those that most likely will have the same values) 'FORMAT: fieldName = Dlookup("fieldname", "tableName", "primaryKeyField=" & currentID) Author = DLookup("Author", "Books", "BookID=" & currentID) Country = DLookup("Country", "Books", "BookID=" & currentID) Language = DLookup("Language", "Books", "BookID=" & currentID) Genre = DLookup("Genre", "Books", "BookID=" & currentID) Publisher = DLookup("Publisher", "Books", "BookID=" & currentID) Title.SetFocus ‘TO DO: change 'Title' with name of field that is going to be edited by the user End Sub - 现在测试代码是否有效。
代码说明
上面的代码用于书店的数据库。 由于书籍系列,有些情况下所有书籍详细信息(例如作者、国家/地区、语言等)除了一个字段(标题)外都是相同的。 因此,需要代码。
下面的列表显示了程序流程。
- 检查用户是否选择了要复制的记录。 如果用户在单击“添加新记录”按钮后立即单击该按钮,将弹出一条错误消息——使 ID 为空。
If IsNull(BookID) Then MsgBox prompt:="Please select the record to copy first.", buttons:=vbExclamation Exit Sub End If
- 获取当前记录的 ID 或主键,并将其作为值分配给 当前ID 这将用作要复制的值的基础。
currentID = BookID
- 添加新记录。
DoCmd.GoToRecord record:=acNewRec
- 根据 当前ID 这是从所选记录复制数据的位置。
'FORMAT: fieldName = Dlookup("fieldname", "tableName", "primaryKeyField=" & currentID)
Author = DLookup("Author", "Books", "BookID=" & currentID)
Country = DLookup("Country", "Books", "BookID=" & currentID)
Language = DLookup("Language", "Books", "BookID=" & currentID)
Genre = DLookup("Genre", "Books", "BookID=" & currentID)
Publisher = DLookup("Publisher", "Books", "BookID=" & currentID)
- 将焦点设置在用户最有可能首先编辑的字段上。这可以提升用户体验,因为它免去了用户手动选择待更新字段的步骤。
Title.SetFocus ‘TO DO: change 'Title' with name of field that is going to be edited by the user
修复损坏的数据库
如果由于不幸的原因,有一天您醒来无法打开数据库,您可以尝试使用第三方工具执行 访问修复. 它创造奇迹。
作者简介:
Jayme Stack 是一位数据恢复专家 DataNumen, Inc.,它是数据恢复技术领域的世界领先者,包括 sql恢复 和 excel 恢复软件产品。 欲了解更多信息,请访问 datanumen.com
