ExcelVBA学习之一键实现分类筛选并直接打印
ExcelVBA学习之一键实现分类筛选并直接打印
【问题】:有一个表格有几各种分类”应聘学科”、”安排单位”、”片区”、“类别”,安要求是要以4种分类进行分别进行“分类”并“打印”出来,
【难题】:天啊,本来如果只要一种类别,那我就可以有两种常规的方法可以解决:
====例如:以片区分类为例===
传统方法(1) “数据”~“筛选”,筛选一个打印一个,解决;
传统方法(2)以片区进行排序,再分以每一种情况的最后添加一分页符,进行打印,可以解决;
◆◆◆现在的问题要几类都要分别做一次,想想也~~~~~~~~时间也不少啊?
【目标】:一键完成,方便快捷,
【代码如下】:
Sub AutoFilterAndPrintOut()
Dim fz_row, data_col, data_row, slt_rng_col
Dim arr, brr, i As Long
Dim rg As Range, fz_sht As Worksheet, data_sht As Worksheet, slt_rng AsRange, p_rng
Dim objDic As Object
Set slt_rng = Application.InputBox("请框选拆分依据列!只能选择单列单元格区域!", Title:="提示", Type:=8)
'========用户选择的拆分依据列
slt_rng_col = slt_rng.Column
MsgBox "准备按第【" &ActiveSheet.Cells(1, slt_rng_col) & "】列进行分类筛选并打印"
Set rg = ActiveSheet.Range("a1").CurrentRegion
arr = ActiveSheet.Range("a1").CurrentRegion
Set objDic = CreateObject("scripting.dictionary")
For i = 2 To UBound(arr)
objDic(arr(i, slt_rng_col)) = ""
Next
brr = objDic.keys
For i = LBound(brr) To UBound(brr)
rg.AutoFilter field:=slt_rng_col, Criteria1:=brr(i) '其中的“slt_rng_col”就是所要筛选的列,
ActiveSheet.PrintPreview
' ActiveSheet.PrintOut
Next i
rg.AutoFilter
MsgBox "打印完成"
End Sub
【运行~~~成功】