VBA初级练习程序 计算器

2020年3月16日20:12:53 发表评论 1,465 views

VBA初级练习程序 计算器

1、数字按钮(命令按钮)

控件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控件14标题:*

控件15名称:cmdDiv 控件15标题:/

4、清零按钮(命令按钮)

控件16名称:cmdClear 控件16标题:C

5、等号按钮(命令按钮)

控件17名称:cmdEqual 控件17标题:=

6、数据显示框(文本框)

控件18名称:txtResult

 

步骤三 程序分析

1、数字按钮:

当按下数字按钮,文本框里应该出现我们所按下的按钮所代表的数字,如果文本框里原来有数字,就应该在原有数字的尾部加上新的数字。

2、小数点按钮

当按下小数点按钮,必须判断文本框中的数字是否含有小数点,如果没有,就把小数点加在文本框的现有数字后面。

3、计算按钮

当按下计算按钮,就把文本框里的数字保存到一个变量中,把代表该按钮的运算符保存在另一个变量中,并清空文本框,等待下一个参加运算的数字的输入。

4、清零按钮

当按下清零按钮,就把文本框的文本把文本框的值置为0

5、等号按钮

当按下等号按钮,就进行计算,用保存在变量里的数字及运算符跟文本框的里数字进行运算,结果显示在文本框中。

 

 

步骤四  程序代码

由于计算器主要是对各位按钮做出反应,所以我们的代码也大多都是在按钮的单击事件中发生,我们把按钮做了一个分类,共为5类:清零按钮、等号按钮、数字按钮、计算符号按钮、小数点按钮。小数点按钮及等号按钮相对比较复杂一点,我们从易到难,先做简单的,再做复杂的。

首先声明几个变量:

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、运算符号按钮:当按下运算符号按钮时,做三件事:

(1)把文本框里的数值保存到变量dblNum1中

dblNum1 = Val(txtResult)

(2)把代表该按钮的运算符号保存到变量strOperator中

strOperator = "+" ‘这是按下”+”号按钮的语句,其它运算按钮要换成对应的符号

(3)把文本框清零,相当于按下清零按钮

txtResult = 0

 

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

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

 

5、小数点按钮:

Private Sub cmdPoin_Click()
Dim i As Integer 
‘定义一个整型变量用来保存循环的次数
Dim j As String 
‘定义一个字符串变量用来保存文本框中的字符
Dim PoinTag As Boolean 
’定义一个布尔变量,用来保存小数点的存在状态,
‘PoinTag=true表示已有小数点,
‘PoinTag=false表示没有小数点
For i = 1 To Len(txtResult) 
‘从I=1到文本框txtResult的总字符数为止,步长为1
j = Mid(txtResult, i, 1) 
‘j=用Mid函数来截取的那一个字符,Mid函数的语法:Mid(字符串或代表字符串
‘的变量,从第几个字符开始,截取几个字符),Mid(txtResult, i, 1)就可以解释为从
‘第i个开始,截取文本框中的1个字符。每次循环i都加1,所以每次截取的字
’符都不一样,从第1个字符开始,逐个截取文本框中的字符,直到最后一个。
If j = "." Then 
‘如果j=小数点,就
PoinTag = True 
‘让变量PoinTag=True
Exit For
‘退出循环
End If 
‘结束If语句
Next I
‘下一个i,也就是i=i+1,再返回04行重新开始循环
If PoinTag = False Then
‘如果变量PoinTag=false,那么
txtResult = txtResult & "." 
‘文本框txtResult中的文本等于原有的文本尾部再加上小数点
End If
‘结束if 语句
End Sub

 

完整代码如下:

Dim dblNum1 As Double '定义变量来保存第一个参加运算的数值

Dim strOperator As String '定义变量来保存运算符号

 

'清零按钮

Private Sub cmdClear_Click()

txtResult = 0

End Sub

 

'数字按钮

Private Sub cmd0_Click()

txtResult = txtResult & 0

End Sub

Private Sub cmd1_Click()

txtResult = txtResult & 1

End Sub

Private Sub cmd2_Click()

txtResult = txtResult & 2

End Sub

Private Sub cmd3_Click()

txtResult = txtResult & 3

End Sub

Private Sub cmd4_Click()

txtResult = txtResult & 4

End Sub

Private Sub cmd5_Click()

txtResult = txtResult & 5

End Sub

Private Sub cmd6_Click()

txtResult = txtResult & 6

End Sub

Private Sub cmd7_Click()

txtResult = txtResult & 7

End Sub

Private Sub cmd8_Click()

txtResult = txtResult & 8

End Sub

Private Sub cmd9_Click()

txtResult = txtResult & 9

End Sub

 

'运算符号

Private Sub cmdadd_Click()

dblNum1 = Val(txtResult)

strOperator = "+"

txtResult = 0

End Sub

 

Private Sub cmdminus_Click()

dblNum1 = Val(txtResult)

strOperator = "-"

txtResult = 0

End Sub

 

Private Sub cmdmult_Click()

dblNum1 = Val(txtResult)

strOperator = "*"

txtResult = 0

End Sub

 

Private Sub cmddiv_Click()

dblNum1 = Val(txtResult)

strOperator = "/"

txtResult = 0

End Sub

 

'等号事件

Private Sub cmdEqual_Click()

Select Case strOperator

Case "+"

txtResult = dblNum1 + Val(txtResult)

Case "-"

txtResult = dblNum1 - Val(txtResult)

Case "*"

txtResult = dblNum1 * Val(txtResult)

Case "/"

txtResult = dblNum1 / Val(txtResult)

End Select

End Sub

 

 

'小数点事件

Private Sub cmdPoin_Click()

Dim i As Integer

Dim j As String

Dim PoinTag As Boolean

For i = 1 To Len(txtResult)

j = Mid(txtResult, i, 1)

If j = "." Then

PoinTag = True

Exit For

End If

Next i

If PoinTag = False Then

txtResult = txtResult & "."

End If

End Sub

 

======================

https://www.lanzous.com/iabq6yh

https://t00y.com/file/3437109-429700440

链接: https://pan.baidu.com/s/1ADVpeJC1_2P9QX6hrO0dZA 提取码: thh5 复制这段内容后打开百度网盘手机App,操作更方便哦

历史上的今天:


欢迎来到菜鸟头头的个人博客
本文章百度已收录,若发现本站有任何侵犯您利益的内容,请及时邮件或留言联系,我会第一时间删除所有相关内容。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: