站内搜索:

使用vba批量对excel表格进行分页处理,生成的箱标签确保在1张A4纸上

浏览人数:
我们以一个工作中的实际情况为例,来说明一下情况,生产的产品总会有包装,而包装又需要粘贴标签,而标签的组成中除了产品的名称,规格等,还有当前箱数,以及总箱数。 如下图:



如果每箱的标签修改一个,打印1个的话,太浪费时间,工作效率就很低。

如果能把所有的标签生成,打印就OK了。

而生成当前箱号以及总箱数,可以使用函数进行解决。如下图,我每10行设定1个箱标签,使用了公式:
="箱号/总箱数:   "&INT(ROW()/10)+26&"  /90"



但这里面有一个问题,如果直接生成,当打印的时候,会存在有些页显示的是一半的标签。



为了避免这种情况的发生,可以使用excel表格中的分页功能。

比如选择某一行后(即要插入分页的位置下一行),点击页面菜单下的插入分页符功能,如下图:



以开始的实际情况为例,每一箱一个标签,有90箱,则要插入90个分页符,这工作量还是有点大啊,如果是300箱标签呢?

能不能自动插入分页符,那就使用vba功能。对于重复的工作,写1个循环,把循环的条件设定好就OK了。

使用excel的宏录制,得到了基础的单次插入分页符的代码:
 

Sub 分页()
    ActiveWindow.ScrollRow = 17
    Range("A31:B31").Select
    ActiveSheet.HPageBreaks.Add Before:=Range("A31")
    ActiveWindow.ScrollRow = 29
    Range("A41:B41").Select
    ActiveSheet.HPageBreaks.Add Before:=Range("A41")
End Sub
 

选择某个行后,点击插入分页,重要的部分就是ActiveSheet.HPageBreaks.Add Before:=Range("A31")

那我们对代码进行修改,添加循环功能就可以了。

Sub 分页()
a = 10
Do While a <= (90 - 26) * 10
b = a + 1
Cells(b, 1).Select
ActiveSheet.HPageBreaks.Add Before:=Cells(b, 1)
a = a + 10
Loop
End Sub
 

每10行进行一下分页,因为标签是从26开始,生成到90标签,则循环的次数就是90-26再乘10.使用vba几秒钟就可以搞定了。再打印的时候,就能确保每个箱标签打印在1张纸上了。
 

制作表格zhizuobiaoge.com
Copyright@all rights reserved