在Excel中用宏命令制作打印表单
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在Excel中用宏命令制作打印表单
在Excel中用宏命令制作打印表单2010-07-09 10:18
这是一张通过Office办公软件Excel电子表格宏制作的单据打印表,其特点是:①操作简单只用鼠标就可完成打印全过程;②"商品单价"表可由厂家提供(或预先做好),对已做过选择的内容可进行标记;③"销售单"表可进行快速添加、清除和修改;④单据可选择性的保存。
本表想不到还很实用,只要在"商品单价"表中双击就可以把数据填入到"销售表"中,如果把它做一些小的改动就可用在其它的单据打印上。现在把制作步骤写下来,让朋友对它做进一步的改进。
1、第一步:首先新建一个Excel电子表文件,在新建的文件中建立二张名字为"商品单价"和"销售单"的表。
在"商品单价"表中是用来存放厂家提供的商品单价数据,只要将厂家的商品单价输入好即可,厂家的商品未调价就不需做修改(如图1)。
2、第二步:在"销售单"表中按图2输入有关数据,部分单元格公式输入如下。
在C1至C3单元格中分别输入=IF(K15="","",K15),
=IF(L1="","",L1)&IF(K1="","",K1),IF(K2="","",K2)
在B5至B15单元格中分别输入=IF(K5="","",K5),…,
=IF(K15="","",K15)
在C5至C15单元格中分别输入
=IF(B5="","",VLOOKUP(B5,spdj,2,FALSE)),…
=IF(B15="","",VLOOKUP(B15,spdj,2,FALSE))
在I5至I15单元格中分别输入=F5*G5,=F6*G6…=F14*G14和=SUM(I5:
I14)
在单元格G2 G3中分别输入=TODAY(),=IF(K3="","",K3)
在单元格C15中输入="合计金额大写):
"&TEXT(INT(ABS(I15)),"[dbnum2]g/通用格式")&"元
"&TEXT(INT(ABS(I15*10))-INT(ABS(I15))*10,"[dbnum2]g/通用格式")&"角"&TEXT(INT(ABS(I15*100))-INT(ABS(I15)*10)*10,"[dbnum2]g/通用格式")&"分整"
在单元格C16 C17 G17中分别输入=IF(K4="","",K4),
=IF(K17="","",K17),=IF(K16="","",K16)
其余的输入就不用我介绍了。而后创建四个按钮,点击"视图"--"工具栏"--"控件工具箱"--"设计模式"--"命令按钮"创建完再点"退出命令按钮"。做一下打印页面设置,锁定该表(如图2),这样这张表就做好了。
3、第三步:编写VB代码。点击"工具"菜单--"宏"--"Visual Basic编辑器",在"Visual Basic编辑器"中建立二个窗体为UserForm1,UserForm2,添加控件并设置好属性(如图
4、图5)。
4、第四步:双击工程列表中的Sheet1(商品单价)如图3,在弹出窗口中编写如下代吗:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As
Range,Cancel As Boolean)
Set My1=Sheets("商品单价")
Set My2=Sheets("销售单")
On Error GoTo mmmm If Selection.Font.ColorIndex=15 Or
My1.Cells(Target.Row,8)""Or Target.Row=1 Or Target.Row=2 Then'过滤已选过的数据行或行头
Range("I"&Target.Row).Select Exit Sub End If If
My1.Cells(Target.Row,1)=""Then Exit Sub'过滤空行
For Q=5 To 14 If My2.Cells(Q,11)=""Then'找销售单内的空行
My2.Cells(Q,11)=My1.Cells(Target.Row,1)'填写数据
My2.Cells(Q,12)=Target.Row My1.Range("A"&Target.Row&":
G"&Target.Row).Font.ColorIndex=15'在商品单价表中对已选过的行作标记
My1.Cells(Target.Row,8)="√"'作标记也可用此代码
My1.Range("I"&Target.Row).Value="√"
Exit For End If Next Q
Range("I"&Target.Row).Select If Q=14 Then My2.Select'填满10行跳转到销售单表
Exit Sub mmmm:
MsgBox"出错!"
End Sub 5、第五步:双击列表中的Sheet12(销售单,在弹出窗口中编写如下代吗:
'新增表单Private Sub CommandButton1_Click()
If MsgBox("确实要新增表单吗?",vbYesNo,"新增表单")=vbYes Then Set My1=Sheets("商品单价")
Set My2=Sheets("销售单")
For E=5 To 14 Sn=My2.Cells(E,12)
If Sn""Then'检测数据是否已被清除
My1.Range("A"&Sn&":G"&Sn).Font.ColorIndex=0'清除商品单价表的某行标记
My1.Range("H"&Sn).Value=""'清除标记