我有一个带有两个选项卡的Excel工作簿。第一个标签标题为“ StagingArea”(工作表上的表名称为_StagingArea),其中包含按模块分组的数据。我想做的是将数据从“ StagingArea”工作表(_StagingArea)中的表动态移动到“ Module1”工作表(_Module1)中的表。因此,如果在“ StagingArea”中为模块“ Module1”添加了新行,则需要将该行移至“ Module1”表。到目前为止,我有以下代码:
Private Sub Workbook_Open()
Dim i, LastRow
LastRow = Sheets("Staging Area").Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To LastRow
If Sheets("Staging Area").Cells(i, "A").Value = "Module1" Then
Sheets("Staging Area").Cells(i, "A").EntireRow.Copy Destination:=Sheets("Module1").Range("_Module1").End(xlUp).Offset(1)
End If
Next i
End Sub
我遇到的问题是它正在遍历“ Module1”的行,但仅将最后一行插入到“ Module1”表中的表中。
然后,我还需要删除“ StagingArea”表中已复制/移动到“ Module1”表中的行。感谢您提供的任何帮助!
答案 0 :(得分:1)
移动操作通过“复制”然后“删除”来实现。 VBA中没有内置的移动功能来实现此目的。因此,我对您的代码做了一些修改。希望有帮助。
Private Sub Workbook_Open()
Dim i as Long, LastRow as Long
Dim rng as Range
LastRow = Sheets("Staging Area").Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To LastRow
If Sheets("Staging Area").Cells(i, "A").Value = "Module1" Then
Sheets("Staging Area").Cells(i, "A").EntireRow.Copy Destination:=Sheets("Module1").Range("_Module1").End(xlDown).Offset(1, 0)
If rng Is Nothing Then
Set rng = Sheets("Staging Area").Cells(i, "A")
Else
Set rng = Union(rng, Sheets("Staging Area").Cells(i, "A"))
End If
End If
Next i
If Not rng Is Nothing Then
rng.EntireRow.Delete
End If
End Sub