第10章VBA会计应用与实践 第11章会计凭证管理模块设计与实现

Slides:



Advertisements
Similar presentations
第二章 VB的编程机制 【授课时间】第3周,第2次课 【授课题目】 2.1 面向对象程序设计概述 2.2 VB中的对象
Advertisements

計算機概論 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 演算法與流程圖 4-3 視窗程式語言設計 4-4 資料結構.
課程名稱:程式設計 授課老師:________
第四章 控制结构.
赋值语句与输入、输出语句.
高中信息技术新课程探讨 算法与程序设计教学实践与探讨 江苏省新海高级中学  张丽.
Access数据库程序设计 总复习.
客户端用Net-Library和SQL SERVER连接
六 EXCEL在固定资产管理中的应用 一固定资产清单(一).
网 络 课 程 马 鞍 学 网 络 山 课 程 大 络 网 Visual Basic程序设计 第 一 讲 最容易接受的编程语言
四 VBScript编程基础.
VBA应用开发与实例 李 辉 微软课程培训讲师. VBA应用开发与实例 李 辉 微软课程培训讲师.
Microsoft Excel 2000 試算表初階 中央大學 計算機中心 周小慧.
Visual Basic程序设计.
程式簡介、VB、物件導向 國立北門高中 林明璋.
BLANK overview.
課程名稱:程式設計 授課老師:________
Chapter 1 複習.
Visual Basic 2010 程式設計16堂特訓 第七堂 VB的迴圈流程控制.
課程名稱:程式設計 授課老師:________
Visual Basic 6.0 學習範本 第三章 基本資料型態.
第二章 Visual Basic语言基础.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
第5章 数组 Visual Basic程序设计.
Visual Basic程序设计 第七章 数组
巨集病毒與VBA.
第3章 變數、資料型別與運算子.
程式語言 -Visual Basic 變數、常數與資料型態.
1 巨集 2 資料型態 3 物件、屬性、方法與事件 4 陳述式與副函式 5 其他注意事項 6 範例
統計圖表 選取儲存格範圍.
ASP动态网页设计实用教程 主讲教师: 开课单位:.
第12章 VBA编程 虽然Access的交互操作功能非常强大且易于掌握,但是在实际的数据库应用系统中,用户还是希望尽量通过自动操作达到数据库管理的目的。应用程序设计语言在开发中的应用,可以加强对数据管理应用功能的扩展。Office中包含Visual Basic for Application(VBA),VBA具有与Visual.
算法与程序设计.
Visual Basic程序设计基础 计算机科学学院.
Access VBA程序设计 本章重点 Access Basic编程语言 运算符、函数与表达式 Access Basic语句 模块的使用
第4章 程序控制结构与算法基础.
計算機程式 廖文淵 Department of Computer Science and Engineering
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
第4章 基本的控制结构 4.1 顺序结构 4.2 选择结构程序设计 4.3 循环结构 4.4 综合实例 退出.
流程控制、陣列 台南市聖功女子高級中學 毛全良.
程式語言Visual Basic 重複結構 黃瀧輝 老師 Long Hwai,Huang.
Visual Basic 程序设计 教师:王 杨 电话:
6-1 For…Next迴圈敘述 6-2 While…End While迴圈敘述 6-3 Do…Loop迴圈敘述 6-4 巢狀迴圈敘述
第12章 VBA模块设计.
新觀念的 VB6 教本 第 6 章 資料型別.
广州市教育局教学研究室编写的 初中《信息技术》第二册第二章 《程序设计初步》
第四章 命令按钮、标签和文本框 大多数应用程序中都有命令按钮CommandButton控件,用户可以单击按钮执行某项操作。
Visual Basic程序设计.
第二章 创建用户界面 本章重点和难点 2.1 基本属性 2.2 创建窗体 2.3 Visual Basic的常用控件 2.4 制作菜单.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
算法与程序设计 周少品.
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
程序设计基础 第 2 章 学习程序设计的基本方法: 多练 模仿.
程式語言(I)- Visual Basic 6.0 第 8 章 模組化程式設計I-副程式與自定函數.
For x = 0 To 9 For y = 0 To 9 z = *x + 10*y …… Next y
金融資訊管理 撰寫VBA的基本事項.
江西财经大学信息管理学院 《数据库应用》课程组2007
VB语言程序设计教程.
金融資訊管理 巨集與VBA.
小结 郭清溥.
Visual Basic 程序设计教程.
Ch04 VB.NET的流程控制 網頁程式設計.
巨集與自訂工具列.
现代信息技术 微电子技术 计算机技术 传感技术 通信技术 处理、存储信息的技术 传感、采集技术 传递信息的技术
第二章、第三章错题分析.
Excel高级功能培训 PSMT质量部 王新民
Visual Basic 程序设计及应用教程 (6.0版)
程式設計 Visual Basic簡介 週次:4 建國技術學院 資管系 饒瑞佶 2003年11月1日.
Presentation transcript:

第10章VBA会计应用与实践 第11章会计凭证管理模块设计与实现 第五部分: 会计信息系统:技术与开发 第10章VBA会计应用与实践 第11章会计凭证管理模块设计与实现

第10章 VBA会计应用与实践 10.1VBA简介 10.2VBA对象模型 10.3VBA程序语句 10.4程序语句 10.5控件对象

10.1 VBA简介 VBA(Visual Basic for Application)是Microsoft Office系统 软件的内置编程语言。它用来为Microsoft Office套件提供一 致的应用程序开发平台。VBA不能创建独立运行的应用程序, 而只能在宿主应用程序中运行。宿主应用程序就是诸如Word、 Excel、Access等Microsoft Office系统软件的子系统。 在Office中提供的VBA开发界面称为VBE(Visual Basic Editor)。 VBE窗口是一个与Excel主窗体分离的窗体。包括菜单栏、工具 栏、工程资源管理窗口、属性窗口、代码窗口等。通过编辑器 可以创建程序也可以编辑已有的程序。 本章将介绍如何利用VBA开发常见的会计应用程序和功能模块。

10.1 VBA简介 1、宏 宏(Macro)是一个命令集合。它可以使Excel自动完成用户指定的动作组合。录制宏命令的时候,Excel将自动记录并存储用户所执行的一系列菜单命令信息,运行宏时,Excel则自动将已经录制的命令组合重复执行,从而实现EXCEL操作的自动化。 宏命令本身实际上就是一种VBA程序,它是存储在VBA模块中的一系列命令和函数,当执行宏命令所对应的任务组合时,Excel将自动启动该VBA程序模块的运行。由于宏是一种程序,有些居心叵测的人利用此性质制作出所谓的宏病毒。为预防宏病毒,Excel或是Word只要检测出文件中有宏将被载入,便发出安全警告。

录制宏的步骤如下: 宏命令的使用步骤如下: (1)单击“开发工具”菜单“宏”子菜单下的“录制宏”菜单项,启动宏录制器。 (2)在“录制宏”对话框的“宏名”文本框中为所要录制的新宏起一个名字,并在点击“确定”后,进入新宏的正式录制阶段。 (3)开始一切需要录制的操作。 (4)单击“开发工具”菜单“宏”子菜单下的“停止录制”菜单项,结束宏的录制过程。   宏命令的使用步骤如下: (1)单击“开发工具”菜单“宏”子菜单下的“宏”菜单项。 (2)在弹出的“宏”对话框中选定要运行的“宏”。 (3)单击“宏”对话框的“执行”按钮。

10.1 VBA简介 2 、录制宏-费用分配 录制费用分配 某企业生产甲、乙两种产品,2013年1月各产品领用的原材料成本分别为40000元,36000元,发生的人工小时分别为400小时、500小时,应向产品负担的直接人工成本9000元,应向产品负担的制造费用为63000元,要求编制费用分配表,分别计算甲、乙两种产品的成本。

(1)首先创建名为“费用及工时表”的工作表,将有关基础数据输入表中。 建立一个名为“费用分配表”的工作表

(2)单击“开发工具”菜单“代码”选项卡下的“录制宏”按钮,启动宏录制器。 (3)在“录制新宏”对话框的“宏名”文本框中为所要录制的新宏起一个名字,并在点击“创建”后,进入新宏的正式录制阶段。

(4)将“费用及工时表”中的B2:C3单元格数据复制到“费用分配表”的B3:C4单元格。将“费用及工时表”中的D4:E4单元格数据复制到“费用分配表”的D5:E5单元格。 (5)在“费用分配表”中D2单元格键入”=D5/SUM(B3:B4)”,在E2单元格键入”=E5/SUM(B3:B4)”,分别计算出人工费用、制造费用的人工工时费率。 (6)在“费用分配表”中D3单元格键入”=B3*$D$2”后按回车键,利用自动填充柄将D3单元格的公式下拉填充到D4单元格,计算出乙产品的人工费用。 (7)在“费用分配表”中E3单元格键入”=B3*$E$2”后按回车键,利用自动填充柄将E3单元格的公式下拉填充到E4单元格,计算出乙产品的制造费用。 (8)在“费用分配表”中F3单元格键入”=SUM(C3:E3)”后按回车键,利用自动填充柄将F3单元格的公式下拉填充到F4单元格,计算出乙产品的制造费用。 (9)在“费用分配表”中F5单元格键入”=SUM(F3:F4)”后按回车键,计算出两种产品的总成本。 (10)单击“开发工具”菜单中的,“停止录制”,结束宏的录制。

宏的编辑 如果在录制宏时出错,或是希望对宏的功能进行改进,就需要对宏进行编辑。用户可以单击“开发工具”菜单“宏”子菜单下的“宏”菜单项,选择【编辑】按钮。就跳转到Visual Basic 编辑器对宏进行编辑,添加、删除、或者修改代码。 Sub 费用分配() Range("D2").Select ' ' 费用分配 宏 ActiveCell.FormulaR1C1 = "=R[3]C/SUM(R[1]C[-2]:R[2]C[-2])" Range("D3").Select ActiveCell.FormulaR1C1 = "=RC[-2]*R2C4" Sheets("费用及工时表").Select Selection.AutoFill Destination:=Range("D3:D4"), Type:=xlFillDefault Range("B2:C3").Select Selection.Copy Range("D3:D4").Select Sheets("费用分配表").Select …… …… Range("B3").Select ActiveSheet.Paste Selection.AutoFill Destination:=Range("F3:F4"), Type:=xlFillDefault Range("D4:E4").Select Range("F3:F4").Select Application.CutCopyMode = False Range("F5").Select ActiveCell.FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)" Range("D5").Select Range("F6").Select End Sub

(2)无法根据用户的输入或者单元格的数值执行不同的操作。 (3)很难显示和使用用户自定义的窗体。 宏的不足之处在于实现一个功能的时候,需要编写冗长的代码。 并且宏录制器也有一定的局限性。比如: (1)宏运行时很难向用户提示信息。 (2)无法根据用户的输入或者单元格的数值执行不同的操作。 (3)很难显示和使用用户自定义的窗体。

从会计实践中来看,编写VBA代码的优点如下: (1)开发周期短。VBA的开发工具集成于Excel系统中,简单易学,开发时间远远低于其他专业软件开发工具。 (2)开发费用少。对开发者的计算机水平要求不高,不需要专业的软件工程方法。开发者只需要了解业务的操作和Excel的知识就可以开发。 (3)设计和输出美观的界面。用VBA开发的应用可以为用户提供直观的交互窗体,方便的表格。 (4)系统维护简单方便。用户可以自行维护,不需要额外的计算机专业人员来维护。

3、VBE编辑器 工程资源管理器 属性窗体 代码窗体

工程资源管理器窗口:列出了打开的工作薄和它们所加载的附加项,包括ExceI对象、窗体、模块等。 在Excel对象的项目中,列出了所有打开的工作表(如Sheet1、Sheet2、Sheet3等)的表对象和一个工作簿(ThisWorkbook)对象。专用于工作表的程序代码(例如工作表事件)都被放置于相应的工作表对象中,而专用于工作薄的事件程序代码被放置于ThisWorkbook对象中。 属性窗口: 用来查看或设置对象的属性。选中对象后,单击属性窗口按钮,或按[F4]键,或执行[视图]菜单中的[属性窗口],就会弹出属性窗口。 设置对象或控件属性的方法有两种:一种方法是直接在属性窗口进行设置。即单击或双击某属性右边的属性值,选择或输入有关属性值;另一种方法是在程序中设置属性 属性窗口又分为【按字母序】和【按分类序】两种,主要是为了方便查看对象属性。 代码窗体

对象框 过程/事件框 边界标识条 过程查看按钮 全模块查看按钮 拆分栏

5.2VBA开发基础 VBA是面向对象的程序设计语言。在Excel VBA中有各种层次的对象,不同的对象有其本身的属性、方法和事件。 例如, 工作簿对象(WorkBook)可以用Open方法打开; 可以用Name属性返回该工作簿的名字; 窗体控件有各种属性,有各种触发事件。

10.2VBA对象模型 1、VBA对象模型简介 (1)对象和对象集合 对象集合是一个包含若干个其他对象的对象,而这些对象通常但并不总是相同的类型。例如,在Excel中的WorkBooks集合包含了所有已打开的WorkBook对象,也包括了用户自定义的窗体对象。

(2)对象的属性 属性是各对象的属性,它定义了对象的特征(诸如大小、颜色或屏幕位置),或某一方面的行为(诸如对象是被激活或可见)。可以通过修改对象的属性值来改变对象的特性。例如,用户可以通过设置对象的属性来控制对象的外观和位置。对象的属性一次只能设置为一个特定的值。

(3)对象的方法 方法指的是对象能执行的动作。每一种想要对象做的操作都被称为[方法]。例如,用户使用Add方法添加一个新工作簿或者工作表,或者为某些窗体控件增加一个新的项目。 对象可以使用不同的方法。例如,单元格区域Range对象有专门的方法让用户清除单元格内容(ClearContents方法)、清除格式(ClearFormats方法)以及同时清除内容和格式(Clear方法),还有让用户选择(Select)、复制(Copy)或移动(Move)对象的方法。

(4)对象的事件 事件是一个对象可以辨认的动作,像单击鼠标、双击鼠标或按下键盘上的某一个键等,并且可以通过编写特定功能的代码针对此动作来做响应。 例如,在下列两种情况下,就会发生Click事件: ①用鼠标单击控件。 ②用户最终在几种可能的值中为控件选择—个值。

2 、对象的使用实验:自动填充 在VBA应用开发中,熟练、灵活应用Excel中各种对象的事件、属性、方法,就可以实现很多有用的功能。 实验内容:在选择Sheet1的某一个单元格的时候,将该单元格的值设置为100

在Excel主要有4层基本对象,由上至下分别为 3、工作簿对象 在Excel主要有4层基本对象,由上至下分别为 Aplication(Excel程序本身) WorkBooks(工作簿)、 Worksheets(工作表对象集) Range(一个单元格或者多个单元格构成的单元格区域对象)。 在计算机会计应用方面,我们通常需要操作工作簿、 工作表和区域。

一种是使用工作表名,另一种是用其在工作簿中的位置(索引号)来确定。 Worksheet对象 一个Excel文件它对应一个工作簿对象(Workbook),而Workbook对象的下一层就是Worksheets对象集,即Worksheets集合,它包含多张工作表Worksheet。Worksheet对象就是Worksheets对象集中的一张工作表。 引用工作表对象的方法有两种: 一种是使用工作表名,另一种是用其在工作簿中的位置(索引号)来确定。

(1)Worksheets对象集的常用属性 ①Count,取得当前工作簿中已打开的工作表的数量。 Dim myNumber as Integer myNumber = Worksheets.Count ②Visible,设置工作表是否可见。 Worksheets(“Sheet1”).Visible = False Worksheets(2).Visible = True

(2)Worksheets对象集的常用方法 ①Add,新建一张工作表并将其添加到集合中。例如: Worksheets.Add Count:=2,Before:= Sheets(1) ②Copy将指定工作表复制到工作簿的另一位置.例如: Worksheets(“Sheet1”).Copy After := Worksheet(“Sheet3”) ③Move,将指定工作表移到工作簿的另一位置。例如: Worksheets(“Sheet1”).Move After := Worksheet(“Sheet3”) ④Delete,删除指定的工作表. Worksheets(“Sheet1”).Delete

(3)Worksheet对象的常用属性 ①Cells,选取指定的单元格或单元格区域。例如: ActiveSheet.Cells.Select ②Columns,选取指定的列。例如: Worksheets(“Sheet1”).Columns(1).Font.Bold = True ③Rows,选取指定的行。例如: Worksheets(“Sheet1”).Row(3).Font.Bold = True ④Name,取得或设置工作表的名称。例如: Dim mySheetName As String mySheetName = ActiveSheet.Name ⑤Range,返回一个Range对象,用来选取指定的单元格或单元格区域。 Range(“A1:B3”).Select ⑥UsedRange,返回指定工作表上己使用区域的Range对象,为只读属性 ActiveSheet.UsedRange.Select ⑦Visible,设置工作表是否可见。

(4)Worksheet 对象的常用方法 ①Activate,使当前工作表成为活动工作表。 Worksheets(“Sheet1”).Activate ②Select,选定工作表对象。 Worksheets(“Sheet1”).Select ③Copy,用来对工作表进行复制。 ④Paste,用来将剪贴板中的内容粘贴到工作表上。

(5)Worksheet对象的事件 当工作表被激活、用户更改工作表上的单元格或数据透视表时,就会触发工作表事件。 Worksheet对象的事件有: Activate、BeforeDoubleClick、BeforeDRightClick、Calculate、Change、Deacttivate、SelectionChange等。

(6)Worksheet对象的常用事件 ① Change事件 当用户更改工作表中单元格的值(例如输入、编辑、删除或粘贴数据),或外部链接引起单元格的更改时产生此事件。 ② SelectionChange事件 当工作表上的选定区域发生改变时,将产生本事件。 ③ Calculate事件 在对工作表进行重新计算时产生此事件。

Range对象 worksheet对象的下一层是Range(单元格区域)对象,Range对象可以是某个单元格(Cell)、某一行(Row)、某一列(Column)或者多个相邻或不相邻单元格区域对象。利用这一对象,可以方便地控制Excel工作表中的上述对象。

(1)Range对象的常用属性 ①Cells,该属性返回一个Range对象,该对象代表指定单 元格区域中的单元格。只读。 ②CurrentRegion,该属性返回Range对象,该对象代表 当前区域,当前区域是一个边缘是任意空行和空列组 合成的范围。该属性是只读属性。当选择多行多列中 有数据的单元格区域时,可使用CurrentRegion属性。 提示:该属性不能用于被保护的工作表。 ③UsedRange,该属性指定工作表上已使用区域的Range 对象。只读。

④Formula,该属性返回或用来设定一个单元格区域对象的公式。 ⑤Name,该属性用来为一个单元格区域对象命名。 ⑥Value,该属性用来为菜单元格区域赋值。variant类型,可读写。 ⑦Count,该属性用来返回一个单元格区域中的行 ⑧Offset,该属性返回一个Range对象,该对象代表某个指定区域以外的区域。只读。

⑨RowHeigh和ColumnWidth。 RowHeigh :返回或设置指定单元格区域内的所有行的行高, 如果区域中所有行的行高都相等,RowHeigh由属性返回 该高度。如果区域中的各行的行高不等,则返回Null。 ColumnWidth:返回或设置指定单元格区域内的所有列的 列宽。如果区域中所有列的列宽都相等,ColumnWidth属 性返回该宽度值。如果区域中的列宽不等,本属性返回 Null。 ⑩NumberFormat和NumberFormatLocal。 NumberFormat属性返回或设置Range对象的格式代码。如 果指定区域中的所有单元格包含不同的数字格式,则该值 为Null。 NumberFormatLocal属性以用户语言字符串形式返回或设置 Range对象的格式代码。

(2)Range对象的常用方法 ①Activate,激活单个单元格,该单元格必须处于当前选定区域内。 ②Autofit,将单元格区域中的列宽和行高调整为最适当的值。 ③Delete,删除单元格对象,可以删除个单元格或单元格区域、或数行、一列或数列。 ④Clear、Clearcomments、CleaContents和ClearFormats。能够清除单元格区域对象的组成部分。

⑤Copy,将单元格区域对象复制到剪贴板中或别处。 ⑥Cut,将单元格区域对象剪贴到剪贴板中或别处。 ⑦Merge和unMerge。Merge在指定的单元格区域内创建合并单元格;unMerge将合并单元格区域拆分为独立的单元格。 ⑧select,该方法用来选定某个单元格和单元格区域。

单元格区域的应用 (1)选取单元格区域的基本语句示例 选择某个单元格:Range(“A1”).Select或Cells(1,1).Select 选择连续的单元格: Range(“A1:G8”).Select,Range(Cells(1,1),Cells(8,7)) .Select 单元格间的移动: ActiveCell.Offset(13,14).Select,Selection.Offset(-3,4).Select,Range(“G5”).Offset(-3,-4).Select 选择某列:Columns(“A”).Select 选择连续的几列:Columns(“A:K:).Select或Range(“A:K”).Select 选择所有列:Columns.Select 选择某行:Range(“1:1”).Select或Rows(3).Select 选择连续的几行:Rows(“4:10”).Select或Range(“4:10”).Select 选择所有行:Rows.Select 选择当前工作表中A列数据区域底部的最后—行:Range(“A65536”).End(xlUp).Select 选择当前工作表中第5行数据区域右边的最后一列:Rows(“5”).End(xlToRight).Select 选择整个工作表区域:Cells.Select

单元格区域的应用 (2)向单元格输入数据的基本语句示例 给当前单元格赋值:ActiveCell.Value = 10,ActiveCell.Value = “合计”。 直接给单元格赋值:Cells(1,1)=200或Range(“A1”)=200。 给单元格区域赋值:Range(“A1:B2”).Value=100,Range(“A1:B2”)=100或 Range((Cells(1,1),(Cells(2,2))=100。 向单元格A1、B1、C1中分别输入”姓名”、”性别”和”部门”(即输入列标题): Range(“A1:C1”) = Array(“姓名”,”性别”,”部门”)。

10.3 VBA程序语句 1、常量 在整个程序运行过程中,值保持不变的量称为常量。常量一般分为以下几种: 数值常量、字符及字符串常量、符号常量、逻辑常 量、日期常量、内置常量

2、变量的类型 变量 在程序运行今值发生变化的数据称为变量。变量代表 数据的一个名称,通过变量可引用它所储存的值。 变量的数据类型多达11种,它们是Integer(整型)、 Long(长整型)、Single(单精度浮点型)、Double(双精度浮 点型)、currency(货币型)、Byte(字节型)、String(字符串 型)、Boolean(布尔型)、Date(日期型)、Object(对象型) 和Variant(变体型)。 变量数据类型决定了变量能够储存哪种数据。

变量的声明 变量的声明就是事先将变量通知程序。对变量进行声明一般可采用Dim或ReDim,此外还有Public 、Privat、Static ,它们既可以对一个变量进行声明,也可以对多个变量进行声明。 语法为:Dim 变量名 as 数据类型 例如: Dim AccountName as String AccountName = ‘我是一名会计师’ 即定义了一个名为AccountName 的字符串型变量。并赋于这个变量的值为“我是一名会计师”。

3、对象变量 除了储存数据的普通变量之外,还有引用VBA对象的特殊变量,这些变量称为对象变量。对象变量不储存数据,但它们告诉数据在哪儿。对象变量的声明和前面介绍的变量声明类似,唯一的不同是在关键字As后面,用户必须输入词语关键字Object作为数据类型, 例如: Dim myRange As Range

4、运算符 ①算术运算符:用来对数值进行计算 ②关系运算符:用于比较 ③连接运算符:用来合并字符串 ④逻辑运算符:用来执行逻辑运算 +、 -、 *、 /、 \、^和Mod ②关系运算符:用于比较 < (小于)、<=(小于等于)、>(大于)、>=(大于等于)、=(等于)、<>(不等于) ③连接运算符:用来合并字符串 &和+ ④逻辑运算符:用来执行逻辑运算 And(与)、Eqv(等价)、Imp(包含)、Not(非)、Or(或)、Xor(异或)

5、过程与函数 过程就是一段程序代码,它分为两种类型:子程序和自定义函数。 子程序结构如下: Sub 过程名(参数1,参数2 …) 子程序代码 End Sub 自定义函数结构如下: Function 函数名(参数1,参数2,…) 程序代码 函数名 = 表达式 End Function

过程的调用 子程序可以单独使用,也可以被其他的子程序调用。调用子程序的方法有两种; ①直接使用子程序名。此时,如果子程序带参数,则参数应直接写在子程序名后面,不能有括弧。 ②使用Call命令。但在使用Call命令时需注意,如果子程序带有参数,则在子程序后面必须把参数写在括弧中;如果子程序不带有参数,则直接写子程序名即可

EXCEL工作簿函数 在任何过程中都可以使用Excel工作簿函数。使用 ExceI工作薄函数的方法有两种: 一是利用Application对象 例如,求单元格区域A1:A100中的最大值和最小值的语句如下 myMax = WorksheetFunction.Max(Range(“A1:A100”)) 二是利用字符串处理的方法 例如,求单元格区域A1:A100的最大值和最小值,就可以通过如下的程序来实现: Public Sub MySub() Range(“B1”) = “=Max(A1:A100)” Range(“B2”) = “=Min(A1:A100)” End Sub

个人工资和薪金所得的所得税计算表格,适用七级累进税率,税率为5%~45%。 6、实验:个人所得税计算 个人工资和薪金所得的所得税计算表格,适用七级累进税率,税率为5%~45%。 级次 全月应纳税所得额 税率 速算扣除数 1 不超过1500元的部分 3 2 超过1500元一4500元的部分 10 105 超过4500元一9000元的部分 20 555 4 超过9000元一35000元的部分 25 1005 5 超过35000元一55000元的部分 30 2755 6 超过55000元一80000元的部分 35 5505 7 超过80000元的部分 45 13505 请利用VBA编制个人所得税自定义函数

10.4 程序语句 为了描述语句的执行过程,VBA语言提供了一套描述机 制,这种机制称为“控制结构”,它的作用是控制语句的 执行过程。 把“控制结构”所用的语句或命令称为结构控制语句。 VBA提供的控制结构有以下三种: 语句块1 条件 语句块2 True False 顺序结构 分支结构 循环结构

1、顺序结构 顺序结构是最简单的程序结构,程序的执行次序是按语 句的书写顺序从上到下逐条进行。 例如:从键盘输入两个数,并将这两个数显示在立即窗 口中的程序段。 Private Sub 顺序结构() a = InputBox("请输入第1个数") b = InputBox("请输入第2个数") Sheet1.Cells(1, 1) = a Sheet1.Cells(1, 2) = b End Sub

2、分支结构 分支结构有两路分支和多路分支两种情况,都可以通过专门的选择 结构语句(又叫分支语句或条件语句)来实现。常用的选择语句有If语句 (两路分支)和select case语句(多路分支)。无论选择结构有两路分支还是 多路分支,程序的流向只能根据条件的值选择其中的一个分支。 (1)单行If条件语句 语句所有部分必须在一行中写完。语法格式如下: If <条件> Then <语句A> [Else语句B] Private Sub单行If语句() Dim A,B A = InputBox(“请输入第1个数”) B = InputBox(“请输入第2个数”) If A < B Then Sheet1.Cells(1, 1) = A & B Else Sheet1.Cells(1, 1) = B & A End Sub

(2)多分支选择语句 多分支选择结构语句是块IF语句的一种变形,它以Select Case开头,以End Select结束。其语法格式如下: 语句块2 …..] [Case Else 语句块n] End Select

3、循环结构 循环结构也称为重复结构,是指程序代码在执行的过程中,其中的 某段代码需要被重复执行若干次。被重复执行的代码段,通常称之为 “循环体”。 VBA为用户提供了DoWhile|Until…Loop、Do…Loop、While…Wend 和For…Next的循环结构语句。 (1)Do … Loop Do…Loop语句也是根据条件决定循环的语句。它包括四种语法格式。 Do while<条件表达式> <语句块1> <Exit Do> <语句块2> Loop Do while<条件表达式> <语句块1> <Exit Do> <语句块2> Loop While <条件表达式> Do Untile<条件表达式> <语句块1> <Exit Do> <语句块2> Loop Do <语句块1> <Exit Do> <语句块2> Loop Until <条件表达式> 表达式1 表达式2 表达式3 表达式4

(2)For …Next 在不能预知循环体被重复执行多少次才能完成任务的情况下,宜使用Do…Loop语句但如果循环次数已知或可预先获得,则最好使用我们下面介绍的For…Next 循环。其语法如下: For <循环变量>= <初值>To <终值> [Step(<步长>)] [<语句块1>] [Exit For] [<语句块2>] Next [<循环变量>] 实现将1到100 之间的奇数填充到Sheet1表的A1到A50单元格。 Private Sub 循环结构() Dim j As Integer j = 1 For i = 1 To 100 Step 2 Sheet1.Cells(j, 1) = i j = j + 1 Next i End Sub

小实验:执行程语句 实验内容: 在Sheet1表中插入一个按钮,点击按钮,将1~100之间的奇数依次填充到A1到A50单元格。

10.5 控件对象 窗体是Excel VBA的最重要的对象,是构成应用程序界面的基本模块。窗体的功能是为用户提供交互式的接口,使应用程序的界面美观实用,用户只需单击界面上的相关按钮或菜单,就可在窗体或Excel上作表上获得所需要的数据,或通过窗体的有关对象,对数据进行计算整理并输出到Excel工作表上。

1、用户窗体 创建用户窗体 创建用户窗体的方法是:在VBE中,执行[插入]→[用户窗体]命令,或单击插入用户窗体按钮,系统就自动插入一个默认名为UserForm1用户窗体 控件工具箱:提供了设计制作用户窗体的重要的基础组件。 常用的控件有:标签(LabeL)、文字框(TextBox)、复合框(ComboBox)、列表框(ListBox)、复选框(CheckBox)、选项按钮(OptionButton)、切换按钮(ToggleButton)、框架(Frame)、命令按钮(CommandButton)、滚动条(ScrollBar)、多页(又称选项卡控件) (MultiPage)、图像(Image)等

2、窗体属性 窗体属性:在插入用户窗体时,系统自动插入的用户窗体的属性为系统的默认值。在窗体的实际设计中,往往需要对窗体的属性进行重新设置。选择窗体,按[F4]键,即可打开窗体的属性窗口

标签用于显示标题文本信息,一般用于在窗体上进行文字说明,标签的常用属性有: 3、标签[LabeI] 标签用于显示标题文本信息,一般用于在窗体上进行文字说明,标签的常用属性有: (1)Caption:标签中显示的内容,最多可有1024个字符。 (2)Alignment:标签中文本的对齐方式,有3种设置方式: 0—fmTextAlignmentLeft:左对齐(默认)。 1—fmTextAlignmentCenter:居中对齐。 2—fmTextAlignmentRight : 石对齐。 (3)BorderStyle:用于设置边界形式,有两种形式: 0—fmBorderStyleNone:无边界(默认) 1—fmBorerStyleSingle:有边界。 (4)specialEffect:用来设置标签对象的外观, 0—fmSpecialEffectFlat;平坦(默认)。 1—fmSpecialEffectRaised: 凸起。 2—fmSpecialEffectSunken:凹陷。 3—fmSpecialEffectEched:周围有框线。 6—fmSpecialEffectBump: 周围框线凸起。 标签的默认属性是Caption属性,默认事件是Click事件。

文本框用于接收用户输入的信息,或显示系统提供的文本信息,用户可以在文字框中编辑文本。文字框的常用属性有: 4、文本框[TextBox] 文本框用于接收用户输入的信息,或显示系统提供的文本信息,用户可以在文字框中编辑文本。文字框的常用属性有: (1)Text或Value;文字框中的内容。 (2)PasswordChar:用于设置是否在文字框中显示输入的字符,即输入的字符是否为口令。默认值为空字符,表示输入的是文本。如果为非空字符(如*),则每输入一个字符就在文字框中显示一个字符(*)。 (3)MultiLine:是否可以输入多行文本,是只读属性,True为可输入多行文本,False为只能输入一行文本(默认)。 (4)ScrollBars:是否含有滚动条。 0—(None)表示不含有滚动条(默认); 1—(Horizontal)表示含水平滚动条; 2—(Vertical)表示含垂直滚动条; 3—(Both)表示含水平和垂直滚动条。 (5)Locked:设置用户是否可以编辑文字框中的文本。True为锁定,不能编辑文字框中的文本,False为可以编辑文字柜中的文本(默认)。 事件。

5、命令按钮[CommandButton] 命令按钮通常用于当用户单击时完成某种功能。命令按钮的常用属性有: (1)Caption:命令按钮的文字。 (2)Cancel:是否为取消按钮。True时为取消按钮,相当于按[Esc]键;False时不是取消按钮(默认)。 (3)DefauIt:是否为默认按钮。True为默认按钮,相当于按[Enter]键;False时不是默认按钮(默认)。 命令按钮的默认事件是Click事件,即在按钮上单击鼠标或直接按空格键或回车键。

6、日历控件[CaIendar] 日历控件不是一个常用控件。在使用日历控件时,需要用户将其添加到控件工具箱中。在工具箱窗体空白处点击右键选择[附加控件]对话框的[可用控件]列表框中,日历控件的名字为[Calendar Control 8.0] 日历控件的主要属性如下: (1)Day:月份中当前所选的日期。 (2)Month:在[日历]控件中显示的当前月。 (3)VaIue:与[日历]控件中所选定的日期相对应的日期值。 (4)Year:当前选定的年份。 日历控件的主要事件是Click事件。

7、实验:在EXCEL表格中使用窗体 在Sheet1工作表中点击某一个单元格时,弹出一个用户窗体,该用户窗体可以输入文本信息,输入完成后,点击关闭按钮,文本信息自动填充到单元格中。

视频教学资源: 宏的应用费用分配 自动填充 VBA程序结构 控件综合实验 自定义过程与函数:个人所得税