使用Visual Basic(VB)自制计算器教程

使用Excel制作一个计算器,详细步骤如下所示:

注意:教程最后会介绍 保存方法,切记按 正确 方法保存

步骤一:打开制作界面

方法a:打开Excel→点击菜单栏中的开发工具→点击Visual Basic→进入Visual Basic界面
方法b:使用快捷键 A/t +F11→进入Visual Basic界面
界面如下:

步骤二:点击菜单栏中的 插入(I)→用户窗体(U)

界面如下:

本教程共有三种制作样式,如下所示

1. 样式一

如下图所示:

步骤1:使用工具箱,运用不同的工具画出一个计算器,(每种工具的用法就不展开详细介绍了。)建立窗体,在窗体上放置相应的数字和运算符号按钮,并放置一个显示数据文本框。

步骤2:给各个控件输入相应的名称及标题

如下图所示:

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

步骤3:程序分析

1、数字按钮:
当按下数字按钮,文本框里应该出现我们所按下的按钮所代表的数字,如果文本框里原来有数字,就应该在原有数字的尾部加上新的数字。
2、小数点按钮
当按下小数点按钮,必须判断文本框中的数字是否含有小数点,如果没有,就把小数点加在文本框的现有数字后面。
3、计算按钮
当按下计算按钮,就把文本框里的数字保存到一个变量中,把代表该按钮的运算符保存在另一个变量中,并清空文本框,等待下一个参加运算的数字的输入。
4、清零按钮
当按下清零按钮,就把文本框的文本把文本框的值置为0
5、等号按钮
当按下等号按钮,就进行计算,用保存在变量里的数字及运算符跟文本框的里数字进行运算,结果显示在文本框中。

步骤4:声明几个变量

双击Visual Basic界面任意控件→进入填写代码界面,上方选择栏选择 :(通用),(声明) 对应位置(光标闪烁的位置)填入下面两行代码

Dim dblNum1 As Double
Dim strOperator As String
如下图所示:

步骤5:输入下面对应代码

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

步骤6:F5运行即可

1. 样式二

如下图所示:

( 其余部分步骤可参考 样式一)

完整代码如下:

Private Sub CommandButton1_Click()
TextBox3 = Val(TextBox1.Text) + Val(TextBox2.Text)
End Sub

Private Sub CommandButton2_Click()
TextBox3 = Val(TextBox1.Text) - Val(TextBox2.Text)
End Sub

Private Sub CommandButton3_Click()
TextBox3 = Val(TextBox1.Text) * Val(TextBox2.Text)
End Sub

Private Sub CommandButton4_Click()
TextBox3 = Val(TextBox1.Text) / Val(TextBox2.Text)
End Sub

Private Sub CommandButton5_Click()
TextBox1 = " "
TextBox2 = " "
TextBox3 = " "
End Sub

Private Sub TextBox1_Change()

End Sub

1. 样式三

如下图所示:

注:

上方选择栏选择 :(UserForm),(Initiaiaze) 对应位置(光标闪烁的位置)填入下面代码

Private Sub UserForm_Initialize()
  ComboBox1.AddItem "+"
  ComboBox1.AddItem "-"
  ComboBox1.AddItem "*"
  ComboBox1.AddItem "/"
  End Sub
如下图所示:


( 其余部分步骤可参考 样式一)

完整代码如下:

Private Sub ComboBox1_Change()
Select Case ComboBox1.Text
Case "+"
CommandButton1.Caption = Val(TextBox1.Text) + Val(TextBox2.Text)
Case "-"
CommandButton1.Caption = Val(TextBox1.Text) - Val(TextBox2.Text)
Case "*"
CommandButton1.Caption = Val(TextBox1.Text) * Val(TextBox2.Text)
Case "/"
CommandButton1.Caption = Val(TextBox1.Text) / Val(TextBox2.Text)
End Select
End Sub

Private Sub UserForm_Click()

End Sub




保存方法:

保存方法如下图所示:




白嫖不好吧    感谢打赏
打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2015-2020 Ma Yuliang
  • Powered by Hexo Theme Ayer
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信