解析:
其实比较简单啦,用一个窗体就可以实现啦!
我自己写的,你可以看看
Option Explicit
Dim strNumber As String
Dim strPoint As String
Dim dblNum1 As Double
Dim intOperator As Integer
'清除结果绝敏
Private Sub cmdGT_Click()
txtDisplay.Text = "0."
strNumber = ""
strPoint = "."
intOperator = 7
End Sub
'输入数字
Private Sub cmdNumber_Click(Index As Integer)
strNumber = strNumber &cmdNumber(Index).Caption
txtDisplay.Text = strNumber &strPoint
End Sub
Private Sub cmdOnOff_Click()
End
End Sub
'运算过程
Private Sub cmdOperator_Click(Index As Integer)
Dim dblnum2 As Double
'是第一次单击运算符时并告枝,将输入的值先赋给第一个数,否则赋值给第二个数进行运算
If intOperator = 7 Then
dblNum1 = CDbl(txtDisplay.Text)
Else
dblnum2 = CDbl(Val(txtDisplay.Text))
'根据输入的符号进行运算
'求普通运算
Select Case intOperator
Case 0
dblNum1 = dblNum1 + dblnum2
Case 1
dblNum1 = dblNum1 - dblnum2
Case 2
dblNum1 = dblNum1 * dblnum2
Case 3
If dblnum2 <>0 Then
dblNum1 = dblNum1 / dblnum2
Else
MsgBox "除数不能为“0”!请友贺重新输入除数。", vbOKOnly + vbInformation, "除零错误"
Index = intOperator
End If
Case 6
dblNum1 = dblNum1 * dblnum2 / 100
End Select
End If
'取得当前输入的运算符,以做下次运算
intOperator = Index
strNumber = ""
txtDisplay = CStr(dblNum1)
'判断是否为文本框中的数字加点
If Not txtDisplay Like "*.*" Then
txtDisplay.Text = txtDisplay.Text &"."
End If
End Sub
Private Sub cmdOtherOper_Click(Index As Integer)
Dim dblNum As Double
'求平方根,平方,
dblNum = CDbl(Val(txtDisplay.Text))
Select Case Index
Case 0
'验证数据是否有效
If dblNum >= 0 Then
txtDisplay.Text = CStr(Sqr(dblNum))
Else
MsgBox "负数不能开平方根!", _
vbOKOnly + vbCritical, "开平方根错误"
End If
Case 1
txtDisplay.Text = CStr(dblNum ^ 2)
End Select
'判断是否为文本框中的数字加点
If Not txtDisplay Like "*.*" Then
txtDisplay.Text = txtDisplay.Text &"."
End If
End Sub
Private Sub cmdPoint_Click()
strNumber = strNumber &strPoint
strPoint = ""
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'使被按下的数字键的对应按钮取得焦点
Select Case KeyCode
Case 48 To 57
cmdNumber(KeyCode - 48).SetFocus
Case 96 To 105
cmdNumber(KeyCode - 96).SetFocus
Case Else
'使按下的符号键对应的按钮取得焦点
If KeyCode = 107 Or (Shift = vbShiftMask And KeyCode = 187) Then
cmdOperator(0).SetFocus
cmdOperator_Click (0)
ElseIf KeyCode = 109 Or KeyCode = 189 Then
cmdOperator(1).SetFocus
cmdOperator_Click (1)
ElseIf KeyCode = 106 Or (Shift = vbShiftMask And KeyCode = 56) Then
cmdOperator(2).SetFocus
cmdOperator_Click (2)
ElseIf KeyCode = 111 Or KeyCode = 191 Then
cmdOperator(3).SetFocus
cmdOperator_Click (3)
ElseIf KeyCode = 13 Then
cmdOperator(7).SetFocus
cmdOperator_Click (7)
ElseIf KeyCode = 8 Then
cmdGT.SetFocus
Call cmdGT_Click
End If
End Select
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
'将合法的数据输入到文本框
Select Case KeyAscii
Case 48 To 58
'调用数字键点击处理程序
cmdNumber_Click KeyAscii - 48
KeyAscii = 0
Case 46
'调用小数点输入
cmdPoint_Click
KeyAscii = 0
Case 13
'当敲击回车时,不能触发Form的 KeyUp 事件,因此在这里设置文本框的焦点
txtDisplay.SetFocus
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
txtDisplay.SetFocus
End Sub
Private Sub Form_Load()
strNumber = ""
strPoint = "."
intOperator = 7
End Sub
Mod运算符
用来对两个数作除法并且只返回余数。
语法
result
=
number1
Mod
number2
Mod
的语法具有以下几个部分:
部分
描述
result
必需的;任何数值变量。
number1
必需的;任何数值表达式。
number2
必需的;任何数值表达式。
说明
在进行
Mod
运算或求余数运算时,该运算符将
number1
用
number2
除(将浮点数字四舍五入成整数),并把余数作为
result
的值返回。例如差陪首,在下列表达式中,A
(result)
等于
5。
A
=
19
Mod
6.7
一般说来,不管
result
是否为一个整数,result
的数据类型为
Byte,Byte
变体、Integer、Integer
变体、Long
或一个包含
Long
的
Variant。任何小数部分都被删除。但是,如果任何一个
Null,类型的表达式出现时,result
都将是
Null。任何
Empty
类型表达式都作为
0
处理。
/
运算符
用来进行两个数的除法运算并返回一个浮点数。
语法
result
=
number1/number2
/
运算符的语法具有以下几个部分:
部分
描述
result
必需的;任何数值变量。
number1
必需的;任何数值表达式。
number2
必需的;任何数值表达式。
说明
result
的数据类型通常是
Double
或
Double
变体。下列情况是例外:
如果
则
result
为
两个表达式都是
Byte、Integer
或Single表达式时,
一个
Single,除非超出正确范围;如果发生这种情况,则产生错误。
两个表达式都是
Byte、Integer
或Single
变体,
一个
Single
变体,除非乱态已超出正确范围;一旦发生这种情况,result
是一个包含
Double
的
Variant。
除法运算中有一个
Decimal及其它任何数据类型,
一个
Decimal
数据类型。
如果有一个或是两个表达式是
Null
表达式,则
result
为
Null。如果一个表达式是
Empty
则作为
0
处理。
\
运算符
用来对两个数作除法并返回一个整数。
语法
result
=
number1\number2
\
运算符的语法具有以下几个部分:
部分
描述
result
必需的;任何数值变量。
number1
必需的;任何数值表达式。
number2
必需的;虚数任何数值表达式。
说明
在进行除法运算之前,数值表达式通过舍去小数部分转换成
Byte、Integer
或
Long表达式。
通常,无论
result
是不是整数,result
的数据类型都是
Byte、Byte
变体、Integer、Integer
变体、Long
或
Long
变体。任何小数部分都被删除。但是,如果任何一个表达式是
Null,则
result
为
Null。如果一个表达式是
Empty,则作为0
处理。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)