【发布时间】:2014-01-15 01:14:02
【问题描述】:
我要做的是从所有工作表中复制可变数据范围,但标题相同,然后一个接一个地粘贴到主工作表中。每当我单击另一张工作表并返回主控时,原始代码(下面的代码 1)都会更新主控中的数据。现在的问题是工作簿中还有其他工作表我不想包含在复制过程中。
我已经编辑了下面收到的代码(下面的代码 2),以尝试定义开始和结束表以运行“循环索引”,并删除“复制标题”代码行,因为每个工作表的标题都出现在整个过程中母版。显然它不起作用,我想知道是否有人可以提供帮助。
您能帮我更正合并后的代码或提供更优雅的解决方案吗?谢谢。
这里的原始问题 - Excel Forum post
此处的辅助代码 - Stack post LoopIndex
原始代码 1
Private Sub Worksheet_Activate()
Dim ws As Worksheet
Application.ScreenUpdating = False
Me.UsedRange.Clear
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> Me.Name Then
If Range("A1") = "" Then ws.Range("A1").EntireRow.Copy Me.Range("A1")'copy in the headers
ws.UsedRange.Offset(1).Copy Me.Range("A" & Rows.Count).End(xlUp).Offset(1)'copy data
End If
Next ws
Application.ScreenUpdating = True
End Sub
编辑代码 2
Private Sub Worksheet_Activate()
Dim ws As Worksheet
Application.ScreenUpdating = False
Me.UsedRange.Clear
Dim StartIndex, EndIndex, LoopIndex As Integer
StartIndex = Sheets("Master sheet").Index + 1
EndIndex = Sheets("End").Index - 1
For LoopIndex = StartIndex To EndIndex
If Range("A1") = "" Then ws.Range("A1").Offset(1).Copy Me.Range("A" &Rows.Count).End(xlUp).Offset(1) 'copy data
Next LoopIndex
Application.ScreenUpdating = True
End Sub
【问题讨论】:
-
基本上,您只是想将跨工作表的数据块合并到主表中,是吗?您不想定位的工作表的名称是什么?
-
表格将是月份的名称(Jan、Feb、Mar、Apr、May...),但这些将随着时间的推移而添加,我不确定我们是否会开始一个新文件当财政年度结束时......这就是为什么我想让代码“在'主表'和'结束'之间的表上执行代码