




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VBA 程序设计基础程序设计基础 一 算法的概念 算法 Algorithm 是指解题方案的准确而完整的描述 是一系列解决问题的清晰 指令 算法代表着用系统的方法描述解决问题的策略机制 也就是说 能够对一定规范的 输入 在有限时间内获得所要求的输出 算法可以使用自然语言 伪代码 流程图等多种不同的方法来描述 一 算法的特征 1 有穷性 Finiteness 算法的有穷性是指算法必须能在执行有限个步骤之后终止 2 确切性 Definiteness 算法的每一步骤必须有确切的定义 3 输入项 Input 一个算法有 0 个或多个输入 以刻画运算对象的初始情况 所谓 0 个输入是指算 法本身定出了初始条件 4 输出项 Output 一个算法有一个或多个输出 以反映对输入数据加工后的结果 没有输出的算法 是毫无意义的 5 可行性 Effectiveness 算法中执行的任何计算步都是可以被分解为基本的可执行的操作步 即每个计算 步都可以在有限时间内完成 也称之为有效性 6 高效性 High efficiency 执行速度快 占用资源少 7 健壮性 Robustness 对数据响应正确 二 算法设计与分析的基本方法 1 递推法 递推算法是一种用若干步可重复的简运算 规律 来描述复杂问题的方法 2 递归法 程序调用自身的编程技巧称为递归 recursion 3 穷举法 穷举法 或称为暴力破解法 是一种针对于密码的破译方法 即将密码进行逐个 推算直到找出真正的密码为止 4 贪心算法 贪婪算法是一种对某些求最优解问题的更简单 更迅速的设计技术 用贪婪法设 计算法的特点是一步一步地进行 常以当前情况为基础根据某个优化测度作最优选择 而 不考虑各种可能的整体情况 5 分治法 分治法是把一个复杂的问题分成两个或更多的相同或相似的子问题 再把子问题 分成更小的子问题 直到最后子问题可以简单的直接求解 原问题的解即子问题的解的 合并 6 动态规划法 动态规划是一种在数学和计算机科学中使用的 用于求解包含重叠子问题的最优 化问题的方法 7 迭代法 迭代法也称辗转法 是一种不断用变量的旧值递推新值的过程 跟迭代法相对应的 是直接法 或者称为一次解法 即一次性解决问题 8 分枝界限法 分支定界法的基本思想是对有约束条件的最优化问题的所有可行解 数目有限 空间进行搜索 三 典型算法举例 求最大公约数的欧几里得辗转相除法 1 自然语言描述 1 a b 令 r 为所得余数 0 r b 若 r 0 算法结束 b 即为答案 2 互换 置 a b b r 并返回第一步 2 流程图 3 程序示例 INPUT m n DO r m MOD n m n n r LOOP UNTIL r 0 PRINT m END 二 程序的三种基本结构 一 顺序结构 程序语句按照编写的顺序自顶向下逐句执行 称为顺序结构 这是程序最基本的 结构 常见的顺序结构语句如赋值语句 示例 A 5 B 10 二 选择结构 选择结构也叫分支结构 选择结构根据某个条件是否成立决定下一步执行的语句 或语句块 常见的选择语句有 If Then End If 和 Select Case End Select 两组 1 If Then End If 语句 格式 If Then 语句块 1 Else 语句块 2 End If 举例 If ZongFen 60 Then MsgBox 及格 Else MsgBox 不及格 End If 2 Select Case End Select 语句 格式 Select Case Case 语句块 1 Case 语句块 2 Case Else 语句块 n End Select 举例 M Month Date Select Case M Case 3 To 5 MsgBox 春季 Case 6 To 8 MsgBox 夏季 Case 9 To 11 MsgBox 秋季 Case 12 To 2 MsgBox 冬季 End Select 三 循环结构 循环结构分为 当型循环 和 直到型循环 两种 前者是当条件满足时执行循 环体内的语句 后者是进入循环体直到条件不满足时退出 VBA 提供三类循环结构 即 Do While Loop For Next 和 While Wend 1 Do While Loop 循环 这是 VBA 中最基本的循环语句 当条件表达式为真时 重复执行循环体内的语 句 格式 Do While 语句序列 1 Exit Do 语句序列 2 Loop 举例 I 0 N 10 S 0 Do While I N S S I I I 1 Loop 2 Do Loop While 循环 当要求循环体至少执行一次才能结束循环 此时 可以使用 Do Loop While 循 环 格式 Do 语句序列 1 Exit Do 语句序列 2 Loop While 举例 S 0 N me text1 value If N 0 then End End If Do S S N Loop While S 1000 3 Do Until Loop 循环 当条件表达式不满足时 重复执行循环体内的语句 与 Do While Loop 意义相 反 格式 Do Until 语句序列 1 Exit Do 语句序列 2 Loop 4 Do Loop Until 循环 执行一次循环体内的语句 然后判断条件是否成立 当条件不成立时继续执行循 环体 条件满足则退出 格式 Do 语句序列 1 Exit Do 语句序列 2 Loop Until 四 程序实例 1 编程 任意输入两个数据 判断较大数 并显示出来 2 编程 计算水费 如果用户月用水量在 7 方以下 则按每方 1 4 元计算 否则 超出部分按每方 1 9 元计算 3 编程 输入一个年份 判断它是平年还是闰年 4 编程 输入三个数 找出它们中的最大数和最小数 或者按序排列输出 5 编程 输入 10 个同学的成绩 判断他们成绩的等级 及格 60 70 中等 71 80 良好 81 95 优秀 95 以上 6 编程 计算 1 2 3 100 的和 7 编程 计算 1 3 5 99 的和 8 编程 计算 1 2 3 4 5 99 100 的结果 9 编程 求一元二次方程 ax2 bx c 0 的根 10 编程 找出 1000 以内的 水仙花数 水仙花数是一个三位数 它的各位上 的数字的立方和 恰好等于它本身 如 153 13 53 33 1 125 27 153 11 编程 找出 1000 以内的 同构数 同构数的特点是平方后得到的数的末尾 和自身相同 如 25 252 625 12 编程 找出 1000 以内的素数 13 编程 用辗转相除法求任意两个数的最大公约数和最小公倍数 14 编程 求 6 15 编程 求 1 2 3 6 16 编程 找出 10000 以内的 四朵金花 四朵金花是一个四位数 它没一位的 四次方和等于它本身 如 1634 三 常量 变量的声明和作用域 1 常量 常量是指在程序运行的过程中 其值不能被改变的量 如 12 5 3 2 2 1E 5 等 常量有直接常量 符号常量 用 Const 语句声明 固有常量 系 统定义常量 如 True vbRed 等 声明常量可以使用 Const 语句 其语法如下 Public Private Const constname As type expression 如 Const PI as Single 3 参数说明如下 Public 可选的 该关键字用于在模块级别中声明在所有模块中对所有过程都可以使用的 常数 在过程中不能使用 Private 可选的 该关键字用于在模块级声明只能在包含该声明的模块中使用的常数 不 能在过程中使用 constname 必需的 常数的名称 遵循标准的变量命名约定 type 可选的 常数的数据类型 可以是 Byte Boolean Integer Long Currency Single Double Date String 或 Variant expression 必需的 文字 其它常数 或由除 Is 之外的任意的算术操作符和逻辑操作符所 构成的任意组合 2 变量和数组 变量是指在程序运行的过程中 其值会因程序的需要而改变的量 变量实际上是一个符号地址 它代表了命名的存储位置 包含在程序执行阶段修 改的数据 每个变量都有变量名 在其作用域范围内可唯一识别 使用前可以指定数据类 型 即采用显式声明 也可以不指定 即采用隐式声明 变量命名规则 变量名必须以字母字符开头 在同一范围内必须是唯一的 不能超过 255 个字符 而且中间不能包含句点或类型声明字符 不要与关键字同名 声明变量 虽然在程序设计中 允许使用隐式声明 但是良好的编程习惯要求在程序的前几 行对所有的变量进行声明 声明变量常用的语句是 Dim 和 DefType 模块级 语句 强制变 量声明可以使用 Option Explicit 语句 1 Dim 语句格式如下 Dim 变量名 As 数据类型 2 可以使用 Dim 语句在一行声明多个变量 如 Dim IntX IntY StrA as String 变量的数据类型 数据类型说明 Boolean布尔型 Byte字节 Integer整型 Long长整型 Currency货币 Single单精度 Double双精度 Data日期 时间 String字符串 Object对象 Variant变体型 VBA 中的类型说明符号有 Integer Long Single Double String 和 Currency 类型说明符号使用时是作为变量名的一部分 放在变量名的最后一个字符 用户自定义类型的声明 用户自定义类型的声明使用 Type End Type 语句 其格式如下 Type As As End Type 举例 Type StuType StuName As String l0 定义字符串变量存储一个名字 StuBirthDate As Date 定义日期变量存储一个生日 StuSex As Integer 定义整型变量存储性别 End Type 0 为女 1 为男 使用 Dim Ud as StuType Ud StuName Xyz Ud StuBirthDate 75 12 17 Ud StuSex 1 变量的作用域 变量常用的作用域有 Local 局部级 Private 私有 窗体级 模块级 或 Public 全局级 本地变量 仅在声明变量的过程中有效 在过程和函数内部所声明的变量 不管 是否使用 Dim 语句 都是本地变量 本地变量具有在本地使用的最高优先级 即当存在与 本地变量同名的模块级的私有或公共变量时 模块级的变量则被屏蔽 私有变量 在所声明的模块中的所有函数和过程都有效 私有变量必须在模块的 通用声明部分使用 Private 变量名 As 数据类型 进行声明 公共变量 在所有模块的所有过程和函数都可以使用 在模块通用声明中使用 Public 变量名 As 数据类型 声明公共变量 数组变量 数组是由一组具有相同数据类型的变量 称为数组元素 构成的集合 1 数组的声明 在 VBA 中不允许隐式说明数组 用户可用 Dim 语句来声明数组 声明方式为 Dim 数组名 数组下标上界 As 数据类型 如 Dim intArray l0 As Integer 这条语句声明了一个有 11 个元素的数组 每个数组元素为一个整型变量 这是只 指定数组元素下标上界来定义数组 可以使用 Option Base 来指定数组的默认下标下界是 0 或 l 默认情况下 数组下标下界为 0 2 数组的使用 数组声明后 数组中的每个元素都可以当作单个的变量来使用 其使用方法同相 同类型的普通变量 其元素引用格式为 数组名 下标值表 其中 如果该数组为一维数组 则下标值表为一个范围为 数组下标下界 数组下 标上界 的整数 如果该数组为多维数组 则下标值表为一个由多个 不大于数组维数 用 逗号分开的整数序列 每个整数 范围为 数组该维下标下界 数组该维下标上界 表示 对应的下标值 例如可以如下引用前面定义的数组 intAma 2 引用一数组 intAma 的第 3 个元素 intArray 0 0 引用二数组 intArray 的第 1 行第 1 个元素 例如 若要存储一年中每天的支出 可以声明一个具有 365 个元素的数组变量 而不是 365 个变量 数组中的每一个元素都包含一个值 下列的语句声明数组 curExpense 具有 365 个元素 按照缺省规定 数组的索引是从零开始 所以此数组的上标界是 364 而 不是 365 Dim curExpense 364 As Currency 若要设置某个元素的值 必须指定该元素的索引 即下标值表 下面的示例对于 数组中的每个元素都赋予一个初始值 20 Sub F Dim C 364 As Currency Dim I As Integer For I 0 to 364 C intI 20 Next End Sub 四 运算符和表达式 1 算术运算符与算术表达式 算术运算符是常用的运算符 用来执行简单的算术运算 VBA 提供了 8 个算术运 算符 表 6 7 列出了这些算术运算符 运算符运算符含义含义举例举例 加法运算3 2 结果为 5 减法运算15 2 结果为 13 乘法运算2 3 结果为 6 浮点除运算5 2 结果为 2 5 整除运算5 2 结果为 2 指数运算3 2 结果为 9 Mod取模运算5 Mod 2 结果为 1 取负运算 5 Mod 2 结果为 1 在 8 个算术运算符中 除取负 是单目运算符外 其它均为双目运算符 单目 运算符只需要一个运算数 双目运算符需要两个运算数 2 字符表达式和连接符 在 VBA 中 字符采用英文半角的双引号或单引号作定界符 如 123 此处的 123 不能参与数学运算 字符连接符有两个 和号 号 用 比用 号安全 举例如下 A My B Home C A B 变量 C 的结果为 MyHome 3 关系运算符 逻辑运算符和逻辑表达式 关系运算符也称比较运算符 用来对两个表达式的值进行比较 比较的结果是一 个逻辑值 即真 True 或假 False 用关系运算符连接两个算术表达式所组成的表达式 叫做关系表达式 VBA 提供了 6 个关系运算符 如下 运算符运算符作用作用举例举例结果结果 相等3 2False 或 不相等3 24True 小于10大于2 3False 小于或等于3 大于或等于2 5False 逻辑运算也称布尔运算 由逻辑运算符连接两个或多个关系式 组成一个布尔表 达式 常用的逻辑运算符有 4 个 如下 运算符运算符含义含义举例举例 Not取反 由真变假 或由假变真 And与运算 两个表达式为真 则结果为真 否则为假 Or或运算 两个表达式中有一个为真 则结果为真 否则为假 Xor异或运算 两个表达式 4 对象运算符与对象运算表达式 对象运算表达式中使用 和 两种运算符 使用对象运算符指示随后将出现的项 目类型 运算符 运算符的作用是指出随后为用户定义的内容 使用 运算符可以引用一个开启的窗体 报表或开启窗体或报表上的控件 表 9 7 列出了 3 种引用方式 点 运算符 点 运算符通常指出随后为 Microsoft Access 定义的内容 例如 使用 点 运 算符可引用窗体 报表或控件等对象的属性 举例 Reports 发货单 货主 Visible 5 运算符的优先级 1 或 的优先级别相同 优先级别也相同 前两种关系运算 符的优先级别低于后四种关系运算符 2 关系运算符的优先级低于算术运算符 3 关系运算符的优先级高于赋值运算符 五 函数 1 数学函数 函数函数功能功能举例举例函数值函数值 Abs N 求 N 的绝对值Abs 3 3 Cos N 求 N 的余弦Cos 45 3 14 180 0 707 Exp N E 指数Exp 2 7 389 Int N 返回参数的整数部分Int 123 456 123 Log N 自然对数Log 2 732 1 Rnd N 返回一个 0 1 之间的随机数Rnd 0 1 之间的随机数 Sgn N 返回一个数的性质符号或 0Sgn 5 1 Sin N 求 N 的正弦Sin 45 3 14 180 0 7068 Sqr N 求 N 的算术平方根Sqr 25 5 Tan N 求 N 的正切Tan 45 3 14 180 0 9992 2 字符函数 函数函数功能功能举例举例函数值函数值 InStr C1 C2 返回 C2 在 C1 中的位置 InStr ABCDE DE 4 LCase C 将 C 中的字母转换成小 写 LCase ABcdE abcde Left C N 返回 C 中左边的 N 个字 符 Left ABCDE 3 ABC Len C 返回字符 C 的长度 Len ABCDE 5 LTrim C 去掉前导空格 LTrim A A A A Mid C M N 从第 M 个字符起 取出 C 中的 N 个字符 Mid ABCDE 2 2 BC Right C N 返回 C 中右边的 N 个字 符 Right ABCDE 3 CDE RTrim C 去掉后置空格 RTrim A A A A Space N 产生 N 个空格字符Space 3 Trim 去掉前导和后置空格 Trim A A A A UCase C 将 C 中字母转换为大写 UCase ABcde ABCDE 3 日期时间函数 函数函数功能功能 Date 或 Date 返回当前系统日期 包含年月日 日期型 Year Date 返回指定日期的年份部分 数值型 Month Date 返回指定日期的月份部分 数值型 Day Date 返回指定日期的天数部分 数值型 Hours Time 返回指定时间的小时部分 数值型 Minutes Time 返回指定时间的分钟部分 数值型 Second Time 返回指定时间的秒数部分 数值型 Time 或 Time 返回当前时间 包含时分秒 Now返回当前的日期和时间 WeekDay 返回当前的星期 4 转换函数 函数函数功能功能例子例子函数函数 Asc C 返回 C 中第一个字符的 ASCII 码 数值型 Asc ABC 65 Chr N 返回 ASCII 码 对应的字符Chr 97 a Str N 将 N 转成 C 类型Str 1000 1000 Val C 将 C 转成 N 类型 Val 123 5 123 5 六 数据类型 数据类型数据类型类型符号类型符号占用字节占用字节取值范围取值范围 整型 Integer 2 32768 32767 长整型 Long 4 不要求 单精度型 Single 4 不要求 双精度型 Double 8 不要求 字符型 String 不定0 65400 货币型 Currency 8 不要求 日期型 Date 无8100 01 01 9999 12 31 布尔型 Boolean 无2True 或 False 对象型 Object 无4任何引用的对象 变体型 Variant 无不定由最终的数据类型而定 字节型 Byte 无10 255 七 常用关键字举例 关键字 又称为保留字 是指 VBA 中具有特殊意义的符号 这些关键字具有固 定的含义 用户不能更改其拼写方式 在对过程 变量等命名时 不允许使用与关键字相 同的拼写 VBA 中有许多关键字 可以分为数组 编译命令 控制流 变换 数据类型 日 期与时间 目录和文件 错误信息等多种 常见关键字举例如下 AbsArrayAscBooleanBytes CallCaseChrConstDate DayDirDoDoubleElse EndExitForFunctionIf LoopMeNotPrivateRandomize SelectSpaceThenWhileXor 八 MsgBox 函数常量
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二手房售房合同协议书模板4篇
- 酒水供货结账合同范本
- 小房东违约合同范本
- 代理股份合同范本
- 喷漆外包简单合同范本
- 智慧数学题目及答案初二
- 教研组长工作计划幼儿园怎么写(5篇)
- 肢体猜成语最难题目及答案
- 区块链技术在供应链管理中的实践
- 时尚发布会方案
- 2025云南昆明巫家坝建设发展有限责任公司招聘23人笔试参考题库附答案解析
- 逐梦飞翔·奋进高二-高二上学期开学第一课主题班会课件
- 基于大单元教学的高三电化学复习课学案
- 高一化学第一学期教学进度计划(新人教版普通高中化学必修第一册教学计划)
- 现代智力七巧板赛前培训
- 国航特殊餐食代码表
- 多媒体技术与应用ppt课件(完整版)
- AS9100D体系标准中文版
- 免疫细胞治疗中心管理制度和质量保障措施
- 《中国人民警察警歌》歌词
- 科技文献检索与利用
评论
0/150
提交评论