|
以下是简便计算器模块,是按下回车后把计算的值传递给文本框中,然后隐藏,如何把它改为关闭?
Private Sub 运算_KeyPress(KeyAscii As Integer)
kk = "运算符"
Select Case KeyAscii
Case 8
kk = "删除"
Case 13
kk = "回车"
运算.SelStart = Len(运算.Text)
If Len("" & 运算.Text & "") < 1 Then
If Len("" & d2 & "") < 1 Then
'返回
Me.Visible = False
Form_采购明细表.实际采购量 = d1
Else
'计一次加0后清d2值
kk = "计算"
d2 = ""
运算 = ""
End If
Else
'计算值
If Len("" & d2 & "") > 0 Then
t_value = "0+" & d1 & d2 & 运算.Text
If IsNull(运算.Text) Or Len(运算.Text) < 1 Then
d2 = ""
kk = "计算"
Else
d1 = Round(Eval(t_value), 2)
d1 = IIf(Mid(d1, 1, 1) = ".", "0" & d1, d1)
d2 = ""
运算 = ""
kk = "计算"
End If
Else
d1 = IIf(Mid(运算.Text, 1, 1) = ".", "0" & 运算.Text, 运算.Text)
d2 = ""
运算 = ""
kk = "计算"
End If
End If
Case 46, 42, 43, 45, 47
If 运算.SelStart = Len(运算.Text) Then
Select Case KeyAscii
Case 46
If (InStr(1, 运算.Text, ".", vbTextCompare) > 0) And (Chr(KeyAscii) = ".") Then
kk = "非法"
End If
Case 42, 43, 45, 47
If Len("" & d2 & "") > 0 Then
t_value = "0+" & d1 & d2 & 运算.Text
If IsNull(运算.Text) Or Len(运算.Text) < 1 Then
d2 = Chr(KeyAscii)
kk = "计算"
Else
d1 = Round(Eval(t_value), 2)
d1 = IIf(Mid(d1, 1, 1) = ".", "0" & d1, d1)
d2 = Chr(KeyAscii)
kk = "计算"
End If
Else
If Len("" & d1 & "") > 0 Then
If Len(运算.Text) > 1 Then
d1 = IIf(Mid(运算.Text, 1, 1) = ".", "0" & 运算.Text, 运算.Text)
Else
d1 = d1
End If
Else
d1 = IIf(Mid(运算.Text, 1, 1) = ".", "0" & 运算.Text, 运算.Text)
End If
d2 = Chr(KeyAscii)
kk = "计算"
End If
End Select
Else
运算 = 运算.Text
运算.SelStart = Len(运算.Text)
kk = "非法"
End If
Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57
kk = "数码"
Case Else
kk = "非法"
End Select
End Sub
Private Sub 运算_KeyUp(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case 37
kk = "运算符"
If Len(运算.Text) > 1 Then
运算 = Mid(运算.Text, 1, Len(运算.Text) - 1)
运算.SelStart = Len(运算)
Else
运算 = ""
End If
Case 39
d1 = ""
d2 = ""
kk = ""
运算 = ""
Case 38, 40
运算 = 运算.Text
运算.SelStart = Len(运算)
End Select
If kk = "非法" Then
kk = "运算符"
If Len(运算.Text) > 1 Then
运算 = Mid(运算.Text, 1, Len(运算.Text) - 1)
运算.SelStart = Len(运算)
Els |
|