ExcelVBA学习之一键实现分类筛选并直接打印

2022-10-25 11:09:36 浏览数 (1)

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

【运行~~~成功】

vba

0 人点赞