利用VBA实现Excel电子表格自动分页统计Word下载.docx
《利用VBA实现Excel电子表格自动分页统计Word下载.docx》由会员分享,可在线阅读,更多相关《利用VBA实现Excel电子表格自动分页统计Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
![利用VBA实现Excel电子表格自动分页统计Word下载.docx](https://file1.bdocx.com/fileroot1/2023-1/2/79215076-23e1-442c-bb0e-7389a740d42e/79215076-23e1-442c-bb0e-7389a740d42e1.gif)
8、在模块中输入或编辑、调试事先编辑好的宏命令,如图所示:
9、具体自动分页汇总和、删除分页汇总宏命令如下:
Dimi,h,hh,t,l,x,rr,dr,tt,ls,cs,lleft,lrightAsInteger
DimrrrAsString
DimrCurrentCellAsRange'
每一页之分页小计所在单元格
Dimr1stSubCellAsRange'
小计区域第一个单元格
PublicSub自动分页汇总()
Cells(1,1).Select
OnErrorResumeNext
t=2
Do
i=InputBox("
默认为10,不能超过一页的范围"
"
请输入每页拟打印的行数"
10)
Ifi<
=0Ori="
"
Then
MsgBox("
每页行数必须大于1!
)
Else
ExitDo
EndIf
Loop
i=Int(i)
h=InputBox("
起始行数,默认为5"
请输入起始行数"
5)
x=i+h
lleft=InputBox("
起始列数,默认为2列"
请输入起始列"
2)
lright=InputBox("
最终列数,默认为倒数第0列"
请输入最终列"
0)
l=Range("
A65536"
).End(xlUp).Row'
本示例选定包含单元格B4的区域中B列顶端的单元格。
Range("
B4"
).End(xlUp).Select
'
ForRowCount=1ToSelection.Rows.Count'
循环选择的每一行。
DoWhilel>
=x
Rows(x+1).InsertShift:
=xlDown'
在当前工作表中Rows(x+1)行插入空隔行
Forcolumncount=lleftToSelection.Columns.Count-lright'
循环选择的每一列。
Range(Cells(x+1,1),Cells(x+1,lleft-1)).Merge'
合并单元格
Cells(x+1,1)="
本页合计"
Cells(x+1,columncount).Formula="
=SUM(R[-"
+CStr(i)+"
]C:
R[-1]C)"
WithActiveSheet.Range(Cells(x+1,1),Cells(x+1,Selection.Columns.Count)).Borders'
边框设置
.Line=xlBorderLine
.Weight=xlMedium'
xlThin细线'
xlThick粗线
.ColorIndex=3
EndWith
WithActiveSheet.Range(Cells(x+1,1),Cells(x+1,Selection.Columns.Count)).Font'
字体设置
.Size=14
.Bold=True
.Italic=True
WithActiveSheet.Range(Cells(x+1,1),Cells(x+1,Selection.Columns.Count)).Interior'
设置单元格底色
.ColorIndex=8'
为青色
Nextcolumncount
ActiveWindow.SelectedSheets.HPageBreaks.AddBefore:
=Rows(x+2)'
在当前工作表中Rows(x+2)行插入分隔符
x=(i+1)*t
x=x+h-1
t=t+1
l=l+1
rr=lMod(i+1)
Rows(l+1).InsertShift:
=xlDown
SelectCaserr
Caseh+1Toi
hh=2
rr=rr-h
rrr=CStr((rr))
Forcolumncount=lleftToSelection.Columns.Count-lright'
Range(Cells(l+1,1),Cells(l+1,lleft-1)).Merge'
Cells(l+1,1)="
Cells(l+1,columncount).Formula="
+CStr(rrr)+"
WithActiveSheet.Range(Cells(l+1,1),Cells(l+1,Selection.Columns.Count)).Borders'
WithActiveSheet.Range(Cells(l+1,1),Cells(l+1,Selection.Columns.Count)).Font'
Nextcolumncount
Caseh
hh=1
Case0Toh-1
rr=rr+i-h+1
.ColorIndex=8'
EndSelect
Rows(l+hh).InsertShift:
Range(Cells(l+hh,1),Cells(l+hh,lleft-1)).Merge'
Cells(l+hh,1)="
总合计"
Cells(l+hh,columncount).Formula="
+CStr(l-h+1)+"
R[-1]C)/2"
WithActiveSheet.Range(Cells(l+hh,1),Cells(l+hh,Selection.Columns.Count)).Borders'
.ColorIndex=3'
3红色、4绿色
WithActiveSheet.Range(Cells(l+hh,1),Cells(l+hh,Selection.Columns.Count)).Font'
WithActiveSheet.Range(Cells(l+hh,1),Cells(l+hh,Selection.Columns.Count)).Interior'
Range(Cells(1,1),Cells(l+1,2)).Locked=True
ActiveSheet.Protect
EndSub
PublicSub删除分页汇总()
ActiveSheet.Unprotect
Cells.Locked=False
ActiveSheet.ResetAllPageBreaks
lastline=[a65536].End(xlUp).Row
Setr1stSubCell=Range("
Ah"
)'
本例名单从Ah单元格开始
ForEachrCurrentCellInRange(r1stSubCell,r1stSubCell.End(xlDown))
Fori=lastlineTohStep-1
IfRange("
A"
&
i)="
OrRange("
ThenRange(i&
"
:
i).EntireRow.Delete
Nexti
NextrCurrentCell
10、关闭宏编辑模板,退到Excel电子表格应用软件中。
11、在Excel菜单栏框内点击右键,弹出对话框如图:
11、在弹出一个对话框点击自定义,弹出一个新对话框如图:
12、在自定义对话框中选择命令标签,并点击新菜单选项,将新菜单拖入Excel菜单栏中新建菜单,并改名为我的菜单。
13、然后再在自定义对话框中选择命令标签,并点击宏选项,将自定义菜单项拖入Excel菜单栏中我的菜单下,新建弹出式菜单,并改名为自动分页统计和删除分页统计如图:
14、然后点击指定宏,弹出对话框如图:
15、在弹出的对话框中分别为我的菜单中的自动分页汇总和删除分页汇总指定相应的宏命令。
16、然后点击Excel菜单栏中的窗口菜单中的隐藏命令,把MicrosoftExcel–PERSONAL页面隐藏。
17、到此为止,用VBA实现Excel电子表格的自动分页汇总就编辑完毕。
三、举例验证效果(功能的验证):
1、调入任意一张Excel工资表,如图所示:
2、点击Excel菜单栏中我的菜单,在弹出的下来菜单中,点击自动分页汇总,弹出如下对话框:
3、输入需要每页打印的行数,默认输入为10行,点击确定弹出如下对话框:
4、输入需要统计工资表的起始行数,即表头行数,默认为3行,点击确定弹出如下对话框:
5、输入需要统计工资表的起始列数,默认为5列,点击确定弹出如下对话框:
6、输入需要统计工资表的最终列数,默认为倒数第2列,点击确定,即完成自动分页汇总,结果下对话框:
7、如果删除分页统计,则点击Excel菜单栏中我的菜单,在弹出的下拉菜单中,点击删除分页汇总菜单,则删除原来统计项,恢复为原来的表格内容,如下图所示:
8、可以重新进行任意行的分页统计,例如非整页统计结果如下所示:
9、功能演示完毕,功能得到认定。
此宏命令能将其他Excel电子报表进行类似的按要求分页、每页自动合计和最后总合计,避免了手动完成这部分工作的繁琐,降低了工作强度,提高了工作效率,如果是长达几十、上百页的报表,更能表现其效果了。