我正在尝试使用VBA在一个工作表上合并多个工作表。如何告诉VBA仅合并可见的工作表?
答案 0 :(得分:2)
我从http://www.mrexcel.com/forum/excel-questions/620641-using-visual-basic-applications-perform-consolidate-function.html获取了Jerry Sullivan的答案并进行了调整。 MSDN站点在理解参数方面有所帮助,例如,范围数组必须包含R1C1样式的完全限定地址。
当然,您没有详细说明如何使用Consolidate
,因此这个答案是通用的。它使用Sum函数合并活动工作簿中所有可见工作表的已使用范围:
Sub Consolidate_Totals()
Dim ws As Worksheet
Dim sArray As Variant, i As Integer
ReDim sArray(1 To 1)
'---Make Array with Named Ranges to be Consolidated
For Each ws In ActiveWorkbook.Worksheets
If ws.Visible And ws.Name <> "Sheet1" Then
i = i + 1
ReDim Preserve sArray(1 To i)
sArray(i) = ws.UsedRange.Address(ReferenceStyle:=XlReferenceStyle.xlR1C1, external:=True)
End If
Next ws
If i = 0 Then Exit Sub
'---Consolidate using the Array
Sheets("Sheet1").Range("A1").Consolidate Sources:=(sArray), _
Function:=xlSum, TopRow:=False, LeftColumn:=False, CreateLinks:=False
End Sub