Excel会计信息化第5章VBA自定义函数、窗体及设计技巧
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
If Found = True Then km = Sheets("会计科目表 ").Cells(t, 2) 'km函数值为"会计科目表"工作表 坐标为(t, 2)单元格的值,即科目编号对 应的科目名称. Else km = "科目编号错" 'km函数值为科目编号错. End If
'执行以上5行程序,在"会计科目表"工 作表的第1列如果找到了输入的科目编 号,就显现对应的科目名称.否则显现 科目编号错. End If End Function
(5)双击Font(字体)栏显现 Font属性的“字体”对话框,在对话 框的“字体”项选择宋体,“字形” 项选择常规,“大小”项选择小五, 然后单击“确定”按钮
说明: 以上第(2)、(3)步属性的设定 是在窗体列表框中显示科目编号和科目 名称。 “会计科目表”工作表的第1和2列 记录科目编号和科目名称,这里正是引 用这些数据。
If Found = True Then KCSL = Sheets("库存数量 ").Cells(t, 2) '以上2行代码,如果找到了函 数变量所定义的商品品种代号(Found = True),那么,函数值为由"库存数量" 工作表第2列与函数变量所定义的商品 品种代号所在行决定的单元格值.即函 数变量所定义的商品品种代号对应的 商品库存数量.
设计思路: 第一步 在“会计科目表”工作 表的第1列(“科目编号”栏)查找 科目编号,确定其所在行t 第二步 将“会计科目表”工作
表坐标为(t, 2)单元格的值(科 目编号对应的科目名称)赋于km
函数
Function km(科目编号) 'Function km(科目编号)表示这是一 个名称为km的函数,变量为"科目编号". Found = False '设定Found为False.
Sub 更新自定义函数值() Columns("IS:IS").Select '选定IS列 Selection.Cut '剪切 Columns("IT:IT").Select '选定IT列 ActiveSheet.Paste '粘贴 End Sub
当定义了自定义函数的工作表 (例中为“盘存报表”工作表)为 当前工作表时,只要执行该宏,工 作表上所有的自定义函数值都会立 即更新。
(3)拖动鼠标,直到出现的矩形 框大小合适 (4)释放鼠标键
修改窗体列表框属性,步骤如下 : (1)用鼠标右键单击窗体列表框, 在弹出的对话框中选属性,显现窗体 列表框属性窗口 (2)选择ColumnCount(列数)属 性,输入:2
(3)选择RowSource(数据源)属 性,输入:会计科目表!a1:b16000 (4)在BackColor(背景色)属性, 选择“系统”项的“工具提示”色, 即乳白色
If 科目编号 = “ ” Then km = “ ” ‘执行以上2行程序,如果科 目编号为空,即用户未输入科目编号, 那么km函数值为空. Else '否则,执行以下程序.
x = 1 Do While Not (IsEmpty(Sheets(“会计科目表 ").Cells(x, 1).Value)) x = x + 1 Loop
Else
KCSL = "商品品种代号错" '如果未找到(Found 仍为 False),那么,显现"商品品种代号错 "字样. End If End Function
图5-2km与图5-5KCSL俩函数变量 取值区别: KCSL函数变量值A10201在函数中 直接给出 km函数变量值由单元格给出
5.1.2 更新自定义函数值 注意: 自定义函数值不能自动更新,这 一点与Excel内臵函数不同。
5.2 VBA窗体设计及特殊作用
示例:教材P56 5.2.1 添加用户窗体 步骤如下: (1)进入宏编辑状态 (2)添加用户窗体 (3)更改窗体和窗体标题名称
5.2.2 在窗体上增加列表 在窗体上增加列表框,步骤如下: (1)在工具箱上单击列表框按钮, 将光标移至窗体,显现小十字“+” (2)在窗体上选择合适的起始点, 按下鼠标左键
For t = 2 To x - 1 If 科目编号 = Sheets(“ห้องสมุดไป่ตู้计科 目表").Cells(t, 1) Then Found = True Exit For End If Next t
'以上10行代码,在"会计科目表"工作 表的第1列查找输入的科目编号.如果 找到了,Found就由False变为True.
Found = False '设定Found 为 False. For t = 2 To x - 1 If 商品品种代号 = Sheets("库存数量").Cells(t, 1) Then Found = True Exit For End If Next t
'以上6行代码,在"库存数量"工作 表第1列从第2行起到第x - 1行查找函 数变量所定义的商品品种代号.如果找 到了,Found就由False变为True;否 则,Found仍为False.
2.定义报表 示例:教材P53
问题: 建立与原始数据所在单元格的联 系来获取报表数据的方法,在定义报 表时由于原始数据所在单元格地址与 报表内容无关,因而容易出错。并且, 当某一原始数据所在单元格地址变动 时,可能导致其它原始数据所在单元 格地址相应变动,从而需要很麻烦地 重新定义报表。
Function KCSL(商品品种代号) x = 1 Do While Not (IsEmpty(Sheets(" 库存数量").Cells(x, 1).Value)) x = x + 1 Loop '以上4行代码,确定"库存数量"工 作表第1列从第1行起到第1个空行的行 数x.
第5章 VBA自定义函数、窗体及设计技巧
5.1 VBA自定义函数设臵 及更新函数值的技巧
5.1.1 设臵自定义函数 自定义函数格式: Function 函数名(变量) … End function 目的:满足特殊需要 自定义函数一当设臵,可以像 Excel的内臵函数一样使用。
1.自动产生科目名称 示例:教材P52