VBA实操
目录
文件
链接:https://pan.baidu.com/s/1ns7wv6I0eKjNzWzBqmPTPw
提取码:lipf
前言
最近通过VBA完成了在Excel中根据明细中的信息自动生成标签的功能,今天通过固定资产标签做一次模拟。
一、Excel设计明细和标签的样板
上面的模板仅供参看,最好在标签打印中提前设置好大小,目前我设置的是大小,大概一行三个。
二、代码部分
1.实现清除功能
新增一个模块
Sub 清除()
'获取标签页打印最大行数
num = Sheets("标签页打印").UsedRange.Rows.Count
'清空打印内容
Sheets("标签页打印").Range("A1:L" & num).clear
End Sub
此功能是为了每次打印前能够清除工作簿内容,避免出现错误
2.实现模板的复制与粘贴
实现原理就是通过复制标签模板里设置好的内容,然后在标签打印的时候粘贴出来
Sub 标签模板(i As Integer, j As Integer)
Dim sourceRange As Range
Dim destinationRange As Range
'设置源区域
Set sourceRange = Sheets("标签模板").Range("A1:D5")
'设置目标区域
Set destinationRange = Sheets("标签页打印").Cells(i, j)
'复制源区域的内容
sourceRange.Copy
'粘贴到目标区域,并且设置格子的大小
destinationRange.PasteSpecial Paste:=xlPasteAll
For Each sourceCell In sourceRange.Cells
Set destinationCell = destinationRange.Cells(sourceCell.Row - sourceRange.Row + 1, sourceCell.Column - sourceRange.Column + 1)
destinationCell.RowHeight = sourceCell.RowHeight
Next sourceCell
End Sub
3.实现内容的复制粘贴
实现原理:通过读取对应行数的数据,将数据插入到标签打印页的指定位置
Sub 标签打印(a As Integer, i As Integer, j As Integer)
Dim start As Integer
start = 1
Sheets("标签页打印").Cells(i, j + 1) = Sheets("固定资产明细").Range("a" & a + start)
Sheets("标签页打印").Cells(i + 1, j + 1) = Sheets("固定资产明细").Range("b" & a + start)
Sheets("标签页打印").Cells(i + 2, j + 1) = Sheets("固定资产明细").Range("c" & a + start)
Sheets("标签页打印").Cells(i + 3, j + 1) = Sheets("固定资产明细").Range("d" & a + start)
Sheets("标签页打印").Cells(i + 4, j + 1) = Sheets("固定资产明细").Range("e" & a + start)
End Sub
最后一步,命令按钮
在标签打印页创建一个打印按钮,并且编辑打印按钮触发的代码
Private Sub CommandButton1_Click()
Dim i As Integer
Dim j As Integer
Dim num As Integer
Dim t As Integer
Dim a As Integer
清除
num = InputBox("请输入打印标签数量:")
For a = 1 To num
i = ((a - 1) \ 3) * 6 + 1
t = a Mod 3
If t = 1 Then
j = 1
ElseIf t = 2 Then
j = 5
ElseIf t = 0 Then
j = 9
End If
Call 标签模板(i, j)
Call 标签打印(a, i, j)
Next
End Sub
总结
这是我第一次用VBA做的实际应用,其中的代码是我根据Java开发的经验,参照VBA的语法来实现的,希望能作为参考