整理网盘的时候翻到一个很久以前做的表格,根据表格地址自动定位数据打印快递面单。涉及到了工作薄内不同表格间的数据调用,以及vba弹出窗口的返回信息,贴在博客上以便将来有需要的时候查找。
表格的vba代码
Sub test()
Dim i As Integer
Dim a As Integer
Dim b As Integer
Dim Aarray(1 To 6)
Dim Barray(1 To 6)
Sheets("自动填单").Range("2:65536").ClearContents
For i = 1 To 6
Aarray(i) = Sheets("打印控制").Cells(5 + i, 4)
Barray(i) = Sheets("打印控制").Cells(5 + i, 5)
Next
a = Sheets("打印控制").Cells(3, 4)
b = Sheets("打印控制").Cells(3, 5)
If a = 0 Or b = 0 Then
MsgBox ("请正确输入开始结束地址!")
ElseIf a > b Then
MsgBox ("请确保开始数字小于等于结束数字")
Else
For i = a To b
Sheets("自动填单").Cells(Aarray(1), Barray(1)) = Sheets("打印控制").Cells(3, 1) '发件人
Sheets("自动填单").Cells(Aarray(2), Barray(2)) = Sheets("打印控制").Cells(3, 2) '发件地址
Sheets("自动填单").Cells(Aarray(3), Barray(3)) = Sheets("打印控制").Cells(3, 3) '发件电话
Sheets("自动填单").Cells(Aarray(4), Barray(4)) = Sheets("收件地址汇总").Cells(i, 1) '收件地址
Sheets("自动填单").Cells(Aarray(5), Barray(5)) = Sheets("收件地址汇总").Cells(i, 2) '收件人
Sheets("自动填单").Cells(Aarray(6), Barray(6)) = Sheets("收件地址汇总").Cells(i, 3) '收件电话
If MsgBox("是否继续打印下一张面单?", vbOKCancel, "请选择") = vbCancel Then
Exit For
End If
Sheets("自动填单").PrintOut
Next
End If
End Sub
设计思路
表格设置了3张表,分别是设置页,地址页,以及布局打印页面;
通过读取设置页面的信息,将地址页的信息分别定位至布局打印页面;
布局打印页面展示如下,位置有些许偏差的情况可以通过调整单元格的位置实现调整;
测试用途,所以每打印一张会弹出确认窗口以确定是否继续下一张,实际应用中取消这个确认流程可以提升一些效率;
取消确认流程,仅需要删除掉宏程序中的这3条语句就可以了。
If MsgBox("是否继续打印下一张面单?", vbOKCancel, "请选择") = vbCancel Then
Exit For
End If