我正在制作一份跟踪招聘流程的工作表。在一张纸上(跟踪),我将每个主题分配到一行,随着流程的进展,用户更新该行以反映最近的进度。我试图在第二张表(文档)上记录历史记录。这将记录每个应用程序的所有步骤。
我目前有两个宏。 1复制所有Tracker工作表并将其插入文档工作表(不粘贴,因为我不想覆盖过去的历史记录。然后我的文档工作表上的第二个宏删除了重复项,因为用户通常只更新一个几行,我不需要跟踪器中的所有数据。我已将宏代码放在下面。
跟踪工作表(复制和插入代码)
Private Sub Workbook_Open()
Worksheets("Tracker").Range("A3:S100").Copy
Worksheets("Documentation").Range("A2").Insert xlShiftDown
End Sub
文档表(删除重复项)
Sub sbRemoveDuplicates()
ActiveSheet.Range("A2:S100").RemoveDuplicates Columns:=Array(2, 15),
Header:=xlYes
End Sub
我将数组设置为2和15,因为这些是我想要基于重复项的两个唯一列。
我想做的是:
在跟踪器表上,只有插入值(有很多功能)
插入值后会自动发生删除重复功能
在打开工作簿时,或者在用户关闭它之前进行某种触发操作时,所有这些都运行正确
如果可能的话,我希望将这一切都运行在一个大宏中,并实现自动化。我不想让用户手动运行宏。谢谢!
答案 0 :(得分:1)
实施: VBE > ThisWorkbook > 粘贴代码。
我还使您的复制范围和粘贴范围动态化(它会将数据从第3行复制到最后一个可用行,并将数据(仅限值)粘贴到第一个可用空白行的Documentation
上)
原样,这将在工作簿关闭之前运行。如果要在工作簿打开时触发此操作,请将代码(顶部和底部行除外)括在内部:
Private Sub Workbook_Open()
'Code here
End Sub
关闭时实施:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim TLRow As Long, DLRow As Long
TLRow = ThisWorkbook.Sheets("Tracker").Range("A" & ThisWorkbook.Sheets("Tracker").Rows.Count).End(xlUp).Row
DLRow = ThisWorkbook.Sheets("Documentation").Range("A" & ThisWorkbook.Sheets("Documentation").Rows.Count).End(xlUp).Offset(1).Row
Thisworkbook.Sheets("Tracker").Range("A3:S" & TLRow).Copy
ThisWorkbook.Sheets("Documentation").Range("A" & DLRow).PasteSpecial xlPasteValues
Thisworkbook.Sheets("Documentation").Range("A2:S" & DLRow).RemoveDuplicates Columns:=Array(2, 15), Header:=xlYes
End Sub