当前位置:编程学习 > VB >>

vb编写计算器遇到的问题

http://p.blog.csdn.net/images/p_blog_csdn_net/xinshi_whpu/406849/o_vbcalc.JPG
------------------
问题:输入1、+、2 然后按“=”,无响应,在文本框text1中无结果出来,不知道是什么地方控制出错了,谢谢各位高手前来指导,谢谢
Private Sub Form_Load()
Dim MyPos As Integer
Dim SearchChar As String
Dim InputNum, InputNum1 As String
InputNum = ""
End Sub
Private Sub Command1_Click() '0
InputNum = InputNum + Command1.Caption
Text1.Text = InputNum
End Sub
Private Sub Command2_Click() '1
InputNum = InputNum + Command2.Caption
Text1.Text = InputNum
End Sub

Private Sub Command3_Click() '2
InputNum = InputNum + Command3.Caption
Text1.Text = InputNum
End Sub

Private Sub Command4_Click() '3
InputNum = InputNum + Command4.Caption
Text1.Text = InputNum
End Sub

Private Sub Command5_Click() '4
InputNum = InputNum + Command5.Caption
Text1.Text = InputNum
End Sub

Private Sub Command6_Click() '5
InputNum = InputNum + Command6.Caption
Text1.Text = InputNum
End Sub

Private Sub Command7_Click() '6
InputNum = InputNum + Command7.Caption
Text1.Text = InputNum
End Sub

Private Sub Command8_Click() '7
InputNum = InputNum + Command8.Caption
Text1.Text = InputNum
End Sub

Private Sub Command9_Click() '8
InputNum = InputNum + Command9.Caption
Text1.Text = InputNum
End Sub

Private Sub Command10_Click() '9
InputNum = InputNum + Command10.Caption
Text1.Text = InputNum
End Sub

Private Sub Command11_Click() '小数点
SearchChar = "."
MyPos = 0
MyPos = InStr(1, InputNum, SearchChar, vbTextCompare) '检查输入的字符串中是否已经包含小数点
If MyPos = 0 Then
InputNum = InputNum + Me.Command11.Caption
Else
Beep
Exit Sub
End If
Text1.Text = InputNum
End Sub

Private Sub Command12_Click() '=号
If Text1.Text <> "" Then
    Select Case SignFlag
        Case "+"
            InputNum = CStr(Val(InputNum1) + Val(InputNum))
        Case "-"
            InputNum = CStr(Val(InputNum1) - Val(InputNum))
        Case "*"
            InputNum = CStr(Val(InputNum1) * Val(InputNum))
        Case "/"
            If Val(InputNum) <> 0 Then
                InputNum = CStr(Val(InputNum1) / Val(InputNum))
            Else
                Beep
                MsgBox "除数为零", vbOKOnly, "错误提示"
                InputNum = ""
            End If
        Case ""
            InputNum = ""
    End Select
Else
    InputNum = ""
End If
Text1.Text = InputNum
End Sub

Private Sub Command13_Click() '+号
If Text1.Text <> "" Then
InputNum1 = InputNum     '将第一个操作数存入InputNum1
Text1.Text = ""     '清空text1,InputNum,准备输入第二个操作数InputNum
InputNum = ""
End If
SignFlag = Command13.Caption
End Sub

Private Sub Command14_Click() '-号
If Text1.Text <> "" Then
InputNum1 = InputNum     '将第一个操作数存入InputNum1
Text1.Text = ""     '清空text1,InputNum,准备输入第二个操作数InputNum
InputNum = ""
End If
SignFlag = Command14.Caption
End Sub

Private Sub Command15_Click() '*号
If Text1.Text <> "" Then
InputNum1 = InputNum     '将第一个操作数存入InputNum1
Text1.Text = ""     '清空text1,InputNum,准备输入第二个操作数InputNum
InputNum = ""
End If
SignFlag = Command15.Caption
End Sub

Private Sub Command16_Click() '/号
If Text1.Text <> "" Then
InputNum1 = InputNum     '将第一个操作数存入InputNum1
Text1.Text = ""     '清空text1,InputNum,准备输入第二个操作数InputNum
InputNum = ""
End If
SignFlag = Command16.Caption
End Sub

Private Sub Command17_Click() '清除
InputNum = ""
Text1.Text = InputNum
End Sub
__________________________________________
email:xinshi_whpu@163.com --------------------编程问答-------------------- 另外一个计算器使用空间数组来写的,共21个UI控件,分别如下:
http://p.blog.csdn.net/images/p_blog_csdn_net/xinshi_whpu/406849/o_2.JPG
0~9:Command1,Index从0~9
BACKSPACE:Command2
CE(取消最后一个数的输入):Command3
C(全部取消):Command4
+/-(负号):Command5 
.(小数点):Command6
=:Command7
+-*/:Command8,Index从0~3
Text1:文本框
----------------------------------------------------------
问题:
该计算器鼠标事件Click能够较好完成+-*/,但是在添加若干键盘控制事件Command*_KeyPress
运行后,从键盘输入数字、字符等,均弹出“编译错误,参数不可选”的错误!
想让各位高手帮我看一下我写的Command*_KeyPress事件,到底是什么地方出了问题,谢谢指教!
程序正文:

Dim num As String, num1 As String
Dim Op As String

Private Sub Command1_KeyPress(Index As Integer, KeyAscii As Integer)
Select Case KeyAscii     '键盘,接受输入0~9,包含主键盘和数字键盘的数字输入
  Case 48, 96
  Index = 0
  Call Command1_Click
  Case 49, 97
  Index = 1
  Call Command1_Click
  Case 50, 98
  Index = 2
  Call Command1_Click
  Case 51, 99
  Index = 3
  Call Command1_Click
  Case 52, 100
  Index = 4
  Call Command1_Click
  Case 53, 101
  Index = 5
  Call Command1_Click
  Case 54, 102
  Index = 6
  Call Command1_Click
  Case 55, 103
  Index = 7
  Call Command1_Click
  Case 56, 104
  Index = 8
  Call Command1_Click
  Case 57, 105
  Index = 9
  Call Command1_Click
  End Select
End Sub

Private Sub Command1_Click(Index As Integer) '鼠标,0到9的数输入
num = num + Command1(Index).Caption
Text1.Text = num
End Sub

Private Sub Command2_Click()   '鼠标,BACKSPACE
If num <> "" Then num = Left(num, Len(num) - 1)
Text1.Text = num
End Sub

Private Sub Command2_KeyPress(KeyAscii As Integer)'键盘,BACKSPACE
If KeyAscii = 8 Then Call Command2_Click
End Sub

Private Sub Command3_Click() '鼠标,例如:输入1+2,那么取消2,保留1
num = ""
Text1.Text = num
End Sub

Private Sub Command4_Click() '鼠标,例如:输入1+2,那么全部取消
num = ""
num1 = ""
Text1.Text = num
End Sub

Private Sub Command4_KeyPress(KeyAscii As Integer)
If KeyAscii = 46 Then Call Command4_Click'键盘,del,删除所有数据输入
End Sub

Private Sub Command6_Click()   '鼠标,小数点
If InStr(num, ".") = 0 Then
num = num + "."
Else
Beep
Exit Sub
End If
Text1.Text = num
End Sub
Private Sub Command5_Click()
If Left(num, 1) <> "-" Then
num = "-" & num
Else
num = Mid(num, 2)
End If
Text1.Text = num
End Sub

Private Sub Command6_KeyPress(KeyAscii As Integer)
If KeyAscii = 110 Then Call Command6_Click'键盘,小数点
End Sub

Private Sub Command7_KeyPress(KeyAscii As Integer)'键盘,输入“=”或“ENTER”
If KeyAscii = 108 Or KeyAscii = 13 Then Call Command7_Click
End Sub

Private Sub Command8_Click(Index As Integer)'鼠标,+-*/
If Text1.Text <> "" Then
num1 = num
Text1.Text = ""
num = ""
End If
Op = Command8(Index).Caption
End Sub

Private Sub Command7_Click()'鼠标=
If Text1.Text <> "" Then
Select Case Op
Case "+"
num = CStr(Val(num1) + Val(num))
Case "-"
num = CStr(Val(num1) - Val(num))
Case "*"
num = CStr(Val(num1) * Val(num))
Case "/"
If Val(num) = 0 Then
Beep
MsgBox "除数不能为零,请重新输入", vbOKOnly, "输入错误"
num = ""
Else
num = CStr(Val(num1) / Val(num))
End If
Case ""
num = ""
End Select
Else '如果从键盘输入字符ABCD。。。,那么将字符串nun清空,文本框随后显示为空
num = ""
End If
Text1.Text = num
End Sub


Private Sub Command8_KeyPress(Index As Integer, KeyAscii As Integer)
Select Case KeyAscii '键盘,+-*/
    Case 107
    Index = 0
    Command8_Click '问题:运行后,从键盘输入数字、字符等,弹出“编译错误,参数不可选”的错误!
    Case 109
    Index = 1
    Call Command8_Click
    Case 106
    Index = 2
    Call Command8_Click
    Case 111
    Index = 3
    Call Command8_Click
End Select
End Sub

Private Sub Form_Load()

End Sub
--------------------------------------------------------------
补充:VB ,  基础类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,