Access爱好者--
所属分类: 精选教程 作者: 李寻欢 更新日期:2003-10-17 19:25:03 阅读次数:366

初识VBA:第四课 计算器代码的编写


上节课我们已经对程序大概框架做了分析,这节课我们就来开始编写程序代码。由于计算器主要是对各位按钮做出反应,所以我们的代码也大多都是在按钮的单击事件中发生,上节课我们把按钮做了一个分类,共为5类:清零按钮、等号按钮、数字按钮、计算符号按钮、小数点按钮。小数点按钮及等号按钮相对比较复杂一点,我们从易到难,先做简单的,再做复杂的。

首先声明几个变量:
Option Compare Database ‘这句是程序原本就有的,在这句下面输入下面两句
Dim dblNum1 As Double ‘定义变量来保存第一个参加运算的数值
Dim strOperator As String ‘定义变量来保存运算符号

1、清零按钮
只有一句程序,作用是把窗体上的文本框清零。

Private Sub cmdClear_Click()
txtResult = 0
End Sub

按下这个按钮之后,文本框里的值为0。

2、数字按钮
这一类的按钮共有10个,当按下这类按钮就把代表这个按钮的数字加在文本框现有数字的后面。

Private Sub cmd0_Click()
txtResult = txtResult & 0
End Sub

这是cmd0按钮的事件,其它数字按钮的事件也类似,只需把最后面的0改为相应数字就行了。

3、运算符号按钮
当按下运算符号按钮时,做三件事:

a)把文本框里的数值保存到变量dblNum1中
dblNum1 = Val(txtResult)

b)把代表该按钮的运算符号保存到变量strOperator中
strOperator = "+" ‘这是按下”+”号按钮的语句,其它运算按钮要换成对应的符号

c)把文本框清零,相当于按下清零按钮
txtResult = 0

4、等号按钮
当按下等号按钮时,程序必须判断你想运行什么运算,判断的根据就是保存在变量strOperator中的运算符,运算还要有运算对象,对象的来源一是保存在变量dblnum1中的数值,一是文本框中的数值。判断语句有许多种,比如if语句以及 select case语句,我们在这里采用的是select case语句,if语句在小数点按钮里会用到。
Select 语句的语法:
Select Case testexpression
[Case expressionlist-n
[statements-n]] ...
[Case Else
[elsestatements]]
End Select

语法说明:
testexpression 必要参数。任何数值表达式或字符串表达式。

expressionlist-n 如果有 Case 出现,则为必要参数。其形式为 expression,expression To expression,Is comparisonoperator expression的一个或多个组成的分界列表。To 关键字可用来指定一个数值范围。如果使用 To 关键字,则较小的数值要出现在 To 之前。使用 Is 关键字时,则可以配合比较运算符(除 Is 和 Like 之外)来指定一个数值范围。如果没有提供,则 Is 关键字会被自动插入。

statements-n 可选参数。一条或多条语句,当 testexpression 匹配expressionlist-n中的任何部分时执行。

elsestatements 可选参数。一条或多条语句,当 testexpression 不匹配 Case 子句的任何部分时执行。

※更详细的说明请查阅Access帮助

语法已经知道了,那下面就来开始用select case来编写等号按钮事件中的程序:
Private Sub cmdEqual_Click()
‘用strOperator来做为选择条件
Select Case strOperator

‘当strOperator=”+”
Case "+"

‘文本框的值等于变量dblnum1的值加文本框的值。这里我们使用了VAL函数,因为文本框中的值是一个字符串,而变量中的值是双精度数值型,所以先要用val函数把文本框中的值转换为数值型。
txtResult = dblNum1 + Val(txtResult)

‘下面的不做解释了,因为都是一样的语句
Case "-"
txtResult = dblNum1 - Val(txtResult)
Case "*"
txtResult = dblNum1 * Val(txtResult)
Case "/"
txtResult = dblNum1 / Val(txtResult)
End Select
End Sub

还有一个小数点按钮的程序没做,由于时间关系,下节课再说,今天已花了太多时间在这了,再不去工作老板要炒我鱿鱼了:)



--------------------------------------------------------------------------------
相关文章

没有相关文章


系统优化
控件使用
数据库设计
数据库连接
系统安全
OLE自动化
常见问题
实用代码
属性详解
网络相关
实用API
经验分享
精选教程
字符处理
ADP相关



文章搜索



制作维护:李寻欢     Mail:[email protected]

关于本站 -- 网站服务 -- 版权条款 -- 联系方法 -- 网站帮助
Access爱好者版权所有 Copyright 2003-2005 All Rights Reserved 未经许可不得盗链