1、一起来学VBA for Access第一课常用的几个基本概念1、变量(Variable) 命名的存储位置,包含在程序执行阶段修改的数据。每一变量都有变量名,在其范围内可唯一识别。可以指定变量的数据类型,也可不指定。变量名必须以字母或字符开头,在同一范围内必须是唯一的。比如你在一个过程中定义了一个变量名为strMsg,在这个过程中就不能定义第二个名为strMsg的变量。变量名不能超过255个字符,而且中间不能包含句点或类型声明字符。用一句话概括:变量就是在程序运行中的一个可改变的值。2、常量(Constant) 执行程序时保持常量值的命名项目。常量可以是字符串、数值、另一常量、任何(除乘幂与Is
2、运算之外的)算术运算符或逻辑运算符的组合。可在代码中的任何地方使用常量代替实际的值。用一句话概括:常量就是在程序运行中的一个不可改变的值3、声明(Declare) 不可执行的代码。它命名常量、变量或过程,并且指定其特性,如数据类型。对于DLL procedures,声明指定名称、库和参数。比如你要在程序中使用变量或常量,就要先声明它。如:dim strMsg as string 声明一个名为strMsg的局部字符串变量。不同的声明语句表示所声明对象的作用域:名称 作用域 声明位置 使用语句局部 过程 过程中 Dim或Static模块级 窗体及模块 模块的声明部份 Dim全局 整个应用程序 模块
3、的声明部份 Public或 Global4、过程(Procedure) 命名的语句序列,可作为单元来执行。 例如,一个按钮的单击事件是一个过程,一个函数也是一个过程。5、模块(Module) 一组声明集合,其后为过程。6、数据类型 数据类型体现了数据的结构的特点。VBA提供的基本数据类型主要有字符串型数据和数值型数据。此外还提供了货币、对象、变体等数据类型。第二课加法运算在编程当中,文本框及按钮是用得比较多的一个控件,我们先来学学如何使用这两个控件。 1、新建一个窗体 2、在窗体上放置三个文本框控件,分别命名为:txtNum1、 txtNum2、txtNum3,我们在命名时,尽量规范一点. 3
4、、在窗体上放置一个按钮,命名为cmdCount 开始编程:我们来作一个加法运算。 在按钮”cmdCount”的单击事件里输入以下语句: txtNum3 = txtNum1 + txtNum2 在这里我们再来简单了解一下什么叫对象及事件: 1、对象: 对象是具有特殊属性(数据)和行为方式(方法)的实体,建立一个对象后,其操作通过与该对象有关的属性、事件和方法来描述。在这里按钮”cmdCount”是一个对象,那三个文本框也分别是三个对象。 2、事件: 是由VBA预先设置好的,能够被对象识别的动作。例如按钮就有:Click(单击)、DblClick(双击)等事件。我们上面的那条语句就来响应该按钮的单
5、击事件,每当该按钮被单击时,就会运行一遍我们的程序。 上面这条语句输完后,程序里的全部语句是这样的: Option Compare Database Private Sub cmdCount_Click() txtNum3 = txtNum1 + txtNum2只需输入这句,其它的都是系统自动生成的 End Sub 我们现在运行这个窗体,在txtNum1里输入111,在txtNum2里输入222,然后按下按钮,在txtNum3内将会出现这个结果:111222,而不是我们想要的333。第三课设计一个简单的计算器上节课我们编写的程序不能正确得出结果,原因是:在字符运算中,“+”号是连字符,跟“&”
6、号一样,作用是把符号前后的字符连起来,而我们引用文本框里的值默认类型是字符型,电脑以为我们要进行字符运算,因此计算结果就是“111222”,所以如果想要得到正确的结果,就要先把文本框的值用VAL函数转换成数值型数据。所以上面的语句改成这样就可以了:txtNum3 = val(txtNum1) + val(txtNum2 ) 这节课我们来做一个简单的计算器。这个计算器的知识要点: 1.字符型与数值型数据的转换 2.IF语句 3.Select Case 4.For循环 下面我们开始设计程序。步骤1 建立窗体 在窗体上放置20个按钮,一个文本框步骤2 给各个控件输入名称及标题 名称及标题如下: 1、
7、数字按钮 控件1名称:cmd1 控件1标题:1 控件2名称:cmd2 控件2标题:2 控件3名称:cmd3 控件3标题:3 控件4名称:cmd4 控件4标题:4 控件5名称:cmd5 控件5标题:5 控件6名称:cmd6 控件6标题:6 控件7名称:cmd7 控件7标题:7 控件8名称:cmd8 控件8标题:8 控件9名称:cmd9 控件9标题:9 控件10名称:cmd0 控件10标题:0 2、小数点按钮 控件11名称:cmdPoin 控件11标题:. 3、计算按钮 控件12名称:cmdadd控件12标题:+ 控件13名称:cmdMinus 控件13标题:- 控件14名称:cmdMult控件1
8、4标题:* 控件15名称:cmdDiv 控件15标题:/ 控件16名称:cmdSqr控件16标题:开方 控件17名称:cmdSqu 控件17标题:平方 控件18名称:cmdReci 控件18标题:倒数 4、清零按钮 控件19名称:cmdClear 控件19标题:C 5、等号按钮 控件20名称:cmdEqual 控件18标题:= 6、文本框 控件21名称:txtResult步骤3 程序分析 我们首先要确定各个按钮的作用: 1、数字按钮: 当按下数字按钮,文本框里应该出现我们所按下的按钮所代表的数字,如果文本框里原来有数字,就应该在原有数字的尾部加上新的数字。 2、小数点按钮 当按下小数点按钮,必
9、须判断文本框中的数字是否含有小数点,如果没有,就把小数点加在文本框的现有数字后面。 3、计算按钮 当按下计算按钮,就把文本框里的数字保存到一个变量中,把代表该按钮的运算符保存在另一个变量中,并清空文本框,等待下一个参加运算的数字的输入。 4、清零按钮 当按下清零按钮,就把文本框的文本把文本框的值置为0 5、等号按钮 当按下等号按钮,就进行计算,用保存在变量里的数字及运算符跟文本框的里数字进行运算,结果显示在文本框中。第四课计算器代码的编写上节课我们已经对程序大概框架做了分析,这节课我们就来开始编写程序代码。由于计算器主要是对各位按钮做出反应,所以我们的代码也大多都是在按钮的单击事件中发生,上节
10、课我们把按钮做了一个分类,共为5类:清零按钮、等号按钮、数字按钮、计算符号按钮、小数点按钮。小数点按钮及等号按钮相对比较复杂一点,我们从易到难,先做简单的,再做复杂的。首先声明几个变量:Option Compare Database 这句是程序原本就有的,在这句下面输入下面两句Dim dblNum1 As Double 定义变量来保存第一个参加运算的数值Dim strOperator As String 定义变量来保存运算符号1、清零按钮只有一句程序,作用是把窗体上的文本框清零。Private Sub cmdClear_Click() txtResult = 0End Sub按下这个按钮之后,
11、文本框里的值为0。2、数字按钮这一类的按钮共有10个,当按下这类按钮就把代表这个按钮的数字加在文本框现有数字的后面。Private Sub cmd0_Click() txtResult = txtResult & 0End Sub这是cmd0按钮的事件,其它数字按钮的事件也类似,只需把最后面的0改为相应数字就行了。3、运算符号按钮当按下运算符号按钮时,做三件事:a)把文本框里的数值保存到变量dblNum1中dblNum1 = Val(txtResult)b)把代表该按钮的运算符号保存到变量strOperator中strOperator = + 这是按下”+”号按钮的语句,其它运算按钮要换成对应
12、的符号c)把文本框清零,相当于按下清零按钮txtResult = 04、等号按钮当按下等号按钮时,程序必须判断你想运行什么运算,判断的根据就是保存在变量strOperator中的运算符,运算还要有运算对象,对象的来源一是保存在变量dblnum1中的数值,一是文本框中的数值。判断语句有许多种,比如if语句以及 select case语句,我们在这里采用的是select case语句,if语句在小数点按钮里会用到。Select 语句的语法:Select Case testexpressionCase expressionlist-nstatements-n .Case Elseelsestatem
13、entsEnd Select语法说明:testexpression 必要参数。任何数值表达式或字符串表达式。 expressionlist-n 如果有 Case 出现,则为必要参数。其形式为 expression,expression To expression,Is comparisonoperator expression的一个或多个组成的分界列表。To 关键字可用来指定一个数值范围。如果使用 To 关键字,则较小的数值要出现在 To 之前。使用 Is 关键字时,则可以配合比较运算符(除 Is 和 Like 之外)来指定一个数值范围。如果没有提供,则 Is 关键字会被自动插入。 state
14、ments-n 可选参数。一条或多条语句,当 testexpression 匹配expressionlist-n中的任何部分时执行。 elsestatements 可选参数。一条或多条语句,当 testexpression 不匹配 Case 子句的任何部分时执行。 更详细的说明请查阅Access帮助语法已经知道了,那下面就来开始用select case来编写等号按钮事件中的程序:Private Sub cmdEqual_Click() 用strOperator来做为选择条件Select Case strOperator 当strOperator=”+” Case + 文本框的值等于变量dbln
15、um1的值加文本框的值。这里我们使用了VAL函数,因为文本框中的值是一个字符串,而变量中的值是双精度数值型,所以先要用val函数把文本框中的值转换为数值型。txtResult = dblNum1 + Val(txtResult) 下面的不做解释了,因为都是一样的语句 Case - txtResult = dblNum1 - Val(txtResult) Case * txtResult = dblNum1 * Val(txtResult) Case / txtResult = dblNum1 / Val(txtResult) End SelectEnd Sub第五课小数点按钮及分支语句这节课我
16、们继续来写小数点按钮的代码写完。(程序中的01至13是行号,为了解释方便而加上去的,在程序里不要加上该行号)。Private Sub cmdPoin_Click()01 Dim i As Integer02 Dim j As String03 Dim PoinTag As Boolean04 For i = 1 To Len(txtResult)05 j = Mid(txtResult, i, 1)06 If j = . Then07 PoinTag = True08 Exit For09 End If10 Next i11 If PoinTag = False Then12 txtResul
17、t = txtResult & .13 End IfEnd Sub01-03定义变量,01定义一个整型变量用来保存循环的次数,02定义一个字符串变量用来保存文本框中的字符,03定义一个布尔变量,用来保存小数点的存在状态,PoinTag=true表示已有小数点,PoinTag=false表示没有小数点。04-10是一个for循环,循环体里面嵌套着一个IF判断语句。04从I=1到文本框txtResult的总字符数为止,步长为1。05 j=用Mid函数来截取的那一个字符,Mid函数的语法:Mid(字符串或代表字符串的变量,从第几个字符开始,截取几个字符),Mid(txtResult, i, 1)就可
18、以解释为从第i个开始,截取文本框中的1个字符。每次循环i都加1,所以每次截取的字符都不一样,从第1个字符开始,逐个截取文本框中的字符,直到最后一个。06 如果j=小数点,就07让变量PoinTag=True08 退出循环09 结束If语句10 下一个i,也就是i=i+1,再返回04行重新开始循环11 如果变量PoinTag=false,那么12 文本框txtResult中的文本等于原有的文本尾部再加上小数点13 结束if 语句 在这个按钮事件中我们用到了IF语句及循环语句,循环语句下节课再讲。上节课我们用了一个select case 语句,IF及Select case语句都是判断语句,或称为分
19、支语句。由于在我们以后的编程中会较多地使用判断语句,尤其是上面提到的两种判断语句,所以在这里我想再着重地讲一讲这两个判断语句的语法及用法。 Select case 的语法我们上节课已讲过了,看一下if语句:If语句有以下几种形式:1、if 条件 then 语句序列 end if解释:如果满足条件,就执行语句序列里的所有语句,语句序列就是一条或一条以上的语句,当然,也可以为空,就是没有语句。例子: if 李寻欢.性别=”男” then msgbox “他是青蛙!” end if 2、if 条件 then 语句序列1 else 语句序列2 end if 解释:如果满足条件,就执行语句序列1,否则就
20、执行语句序列2。例子: if 李寻欢.性别=”男” then msgbox “他是青蛙!” else msgbox “他是恐龙!” end if3、 if 条件1 then 语句序列1 elseif 条件2 then 语句序列2 elseif 条件3 then 语句序列3 elseif 条件n then 语句序列n end if 解释:如果满足条件1就执行语句序列1,否则如果满足条件2就执行语句序列2,否则如果满足条件3就执行语句序列3,否则如果满足条件n,就执行语句序列n。例子: if 李寻欢.性别=”男” then msgbox “他是青蛙!” elseif 李寻欢.性别=”女” then
21、 msgbox “他是恐龙!” elseif 李寻欢.性别=”不男不女” then msgbox “他是怪物!” msgbox “大家快跑呀!” msgbox “哎呀!我的鞋掉了!” msgbox “鞋掉了有什么了不起,我的裤子都掉了!” end if上面的所有例子中,李寻欢是一个对象,性别是该对象的属性,引用一个对象的属性就用这种形式:李寻欢.性别,具体的对象及属性我们以后再说。Msgbox是一个事件处理函数,它的作用是在对话框中显示消息,等待用户单击按钮,并返回一个整数来表示单击的是哪一个按钮。在上面跟在msgbox 函数后面的双引号中的文字,将会显示在对话框中。 既然if语句及selec
22、t case语句都是判断语句,那到底什么时候该用if语句,什么时候该用select case语句呢?我个人是这样理解的:要判断三个以下条件的,我用If语句,三个条件以上的我用select语句,因为用select case语句显得更为直观一点,使程序更易看懂。上一节课的select case语句如果用if语句来写,应该如何写?第六课小数点代码分析及For循环语句这节课我们来分析一下小数点按钮的代码,这段代码用到了for循环及if语句,if语句上节课已讲过了,这节课着重讲一下for循环语句。for循环有两种形式: 1、For Each.Next 针对一个数组或集合中的每个元素,重复执行一组语句。
23、这种循环以后再讲2、ForNext 以指定次数来重复执行一组语句。语法: (从) (到) (每次+) for 变量=初始值 To 结束值 Setp 步长 语句1 语句2 语句N Next 变量 当每次变量加1的情况下,中括号里的“Setp 步长”可以不写,如果变量每次加的不是1,是其它数字,这句不可省略。 当程序运行到“Next 变量”时,就会做一个加法运算:变量=变量+步长,比如变量原来等于1,步长设为2,当运行到这句时,变量就变成:1+2=3了,然后程序又返回第一句:for 变量=初始值 To 结束值 Setp 步长,到了这里程序会自动用变量的值跟结束值比较一下,如果变量小于或等于结束值,
24、程序就再执行一次循环体里的语句,如果大于结束值,就直接跳过循环,执行“Next 变量”之后的语句了。当然,不是一定要执行到变量大于结束值才可以跳出循环,可以在循环体内设置一个条件,当满足这个条件就用“Exit For”来跳出循环,我们的小数点按钮就用了这种方法。下面我们来分析小数点的代码。程序思路: 要确定文本框中的字符是否包含小数点,必须一个字符一个字符地跟“.”比较,如果该字符等于“.”,就说明文本框中的字符包含小数点,这时就可以跳出循环了,因为我们的目的已达到。当然,你可以不跳出循环,让它比较完所有字符,程序也不会出错,只是程序运行时间增加了,程序的效率降低了。如果找到小数点,要把这个信
25、息用一个变量来保存起来,因为我们要根据找到或没找到小数点来决定小数点按钮按下去后,文本框里的字符后面是否加小数点。如果找到小数点,就不能再加小数点了,如果没找到,就在后面加一个小数点。因为是否找到小数点只有两种状态:找到或没找到,所以就把保存是否找到小数点的信息的变量定义为布尔型数据,这种数据只有两种值True/False,用中文表示就是:是/否。你也可以定义成字符型或数字型,然后用不同的值来表示是否找到,只要你知道是什么意思就可以了,不过如果只存在两种状态的话,最好用布尔型。 程序思路的第一句话我提到了要一个字符一个字符地跟“.”比较,但文本框里的字符是一串,如何把它们分解成一个一个呢?用M
26、id函数!Mid函数的语法: 变量=Mid(字符串,从第几个字符开始截取,要截取几个字符)如:i=Mid(“Hello!”, 5, 1)表示从第5个字符开始截取,要截取1个字符。运行这句程序之后,I就等于o了。程序分析得差不多了,下面注释一下各语句:Private Sub cmdPoin_Click() Dim i As Integer 定义变量i,让它做为循环变量 Dim j As String 定义变量j,让它保存mid函数截取下来的字符 Dim PoinTag As Boolean 定义变量PoinTag,让它保存是否找到小数点标志 For i = 1 To Len(txtResult) 从1循环到字符长度,注:Len函数返回字符长度 j = Mid(txtResult, i, 1) 截取第i个字符赋值给j If j = . Then 如果j等于小数点 PoinTag = True 把找到小数点的信息保存到顶变量pointag中 Exit For 跳出循环体,不再循环 E
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1