【发布时间】:2015-09-17 21:22:51
【问题描述】:
我有一个主工作簿和多个子工作簿,每个工作簿都位于固定位置,它们将工作记录保存为单独的行。根据选择的工作簿,将行从主工作簿复制到子工作簿。
但是,我坚持使用 VBA 编码(以宏形式),因此他们可以从每个子工作簿中更新主工作簿。我需要它根据分配给每件作品并出现在子工作簿和主工作簿的同一列(D 列)中的唯一 ID 号来查找和更新主文件中的工作行。
任何帮助或想法将不胜感激。
提前致谢
抱歉。请查看我的示例子工作簿中的以下数据(抱歉,我无法正确格式化),在此之下,我必须将当前 VBA 代码复制回主工作簿:
数据:
Complaint Type Raised by Status ID
Billing Percy Completed 101
Billing Percy Completed 102
Metering John Pending 103
Reads John Pending 104
Reads Jack Pending 105
Billing Julie Untouched 106
Service Jack Completed 107
Metering Julie Untouched 108
Service Percy Pending 109
Payment Pete Pending 110
VBA 代码:
Private Sub CommandButton21_Click()
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Dim SourceRange As Range, DestRange As Range
Set SourceRange = Sheets("Sheet1").Range("A2:D2") 'data source
wb = ActiveWorkbook.Name
Workbooks.Open "C:\Users\user\Desktop\Test.xlsm" 'path to Master
Windows(wb).Activate 'Activate Child Workbook
SourceRange.Cut 'define the range to copy 'Cut data from child workbook
Windows("Test.xlsm").Activate 'Activate Master
Sheets("Completed").Select 'Activate Sheet
Workbooks("Test.xlsm").Sheets("Completed").Cells(Rows.Count, "A").End(xlUp).Offset(1).Paste 'Paste in Master
Application.CutCopyMode = False 'Clear Clipboard
End Sub
【问题讨论】:
-
使用MATCH function 获取主工作表中的行号。一旦你有了它,其他一切都只是使用Range.Cells property 来定位目标的直接价值转移。
-
我可以非常轻松快速地使用 WB 版本的 MATCH。有没有办法将该逻辑操作到 VBA 版本中?
-
类似
rw = application.match(.Range("A1"), sheets("Master").columns(1), 0)。然后使用rw设置值。您没有样本数据,也没有我可以尝试理解的原始努力,因此您几乎只能靠自己。 -
请参阅修改后的原始评论以及编码和示例数据表。抱歉,我对 VBA 编码还是很陌生。我会尽我所能使用你提供的代码,并用我拥有的东西回来。