在Excel中用宏命令制作打印表单

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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=""'清除标记

相关文档
最新文档