我想弄清楚如何打印“ActiveSheet”或Sheet1与“Sheet5”(行1-6,A:M)一起显示在底部的2行Sheet1结束和Sheet5数据开始之间的空间。我一直试图查找类似的问题,并阅读关于“联盟”的内容,但我不确定它会如何适合这里。从多个工作表结合打印范围VBA EXCEL
Private Sub CommandButton1_Click()
Dim Sel_Manager As String
'Headers repeated at the top
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.PrintTitleRows = "$2:$2"
.PrintTitleColumns = "$B:$M"
.Orientation = xlLandscape
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
'Manager selection through ComboBox dropdown
Sel_Manager = ComboBox1
'Inserting autofilters for worksheet
Cells.Select
Selection.AutoFilter
'Manager defined in the dropdown ComboBox
ActiveSheet.Range("B2", Range("M2").End(xlDown)).AutoFilter Field:=1, Criteria1:=Sel_Manager
ActiveSheet.Range("B2", Range("M2").End(xlDown)).AutoFilter Field:=2, Criteria1:="A"
'Here I select range to be printed and specify manager in filename
ActiveSheet.Range("B2", Range("M2").End(xlDown)).Select
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Sel_Manager + ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
ActiveSheet.ShowAllData
Application.PrintCommunication = True
End Sub
'设置Rng3 =联合(Rng1,Rng2)'将创建包含Rng1和Rng2的组合范围。 Rng1和Rng2不必是连续的,但它们必须位于同一工作表内。所以'联合'不会帮助打印两个工作表的位。您必须创建一个新的临时工作表并从Sheet1和Sheet5复制所需的数据,打印临时工作表,然后删除临时工作表。 –
如果我将参考单元粘贴到Rng1底部的Rng2,是否可以将Rng2设置为动态命名范围?它需要是动态的,因为用户可以将行添加到Rng1中,这会将底部的Rng2参考向下移动。我尝试使用命名的范围,但它锁定范围内的任何行你先设置它,并不会调整时插入行。 –
我不完全理解你的问题。用户如何在宏运行时添加更多的行?一个“联盟”可以结合多达30个范围:“联盟(Rng1,Rng2,...,Rng30)”。 “联盟”是一种智能功能;如果两个范围是连续的,它将合并它们。你可以在用'Union'创建的范围上使用'Union'。 Set Rng1 = Union(Rng2,Rng3)''Set Rng1 = Union(Rng1,Rng4)'是有效的。 –