计算器不会执行基本算术计算
Calculator won't perform basic arithmetic calculations
我对 VBA 比较陌生,一直在努力学习它。我开始尝试编写一个计算器并对其进行编程以执行基本计算,例如加法、除法、减法和乘法。但是,当我尝试使用下面的代码执行这些功能时,计算器不会编译和执行上述计算。
Private Sub cmdBtnEql_Click()
On Error GoTo ErrOcccered
If txtDisplay = "Cannot divide by Zero" Then txtDisplay = Empty
If txtRes <> "" And calVal Then
FNum = Val(txtDisplay): SNum = Val(txtRes)
Select Case calVal
Case "Add"
txtRes = FNum + SNum
Case "Minus"
txtRes = FNum - SNum
Case "Multiplication"
txtRes = FNum * SNum
Case "Divide"
If SNum = 0 Then
txtRes = "Cannot divide by zero"
Else
txtRes = FNum / SNum
End If
Case Else
End Select
End If
ErrOcccered:
End Sub
但是,这个过程实际上并没有执行上述计算。我可以单击按钮,相应的数字会显示在用户表单的文本框中,而无需进行任何计算。这段代码不是我个人的,我正在使用我在网上找到的另一个代码,并试图理解 VBA 中的所有语法和语义是如何工作的。我感谢您的帮助!谢谢
在您的代码的这一行放置一个断点。
If txtRes <> "" And calVal Then
使用 F8 逐步执行您的代码并找出它到底做了什么。
你会发现它永远不会超过这条线,因为有一个测试 calVal
是否有一个非零的值。当然,calVal 应该包含一个词,例如“Add”,因此永远不能有零以外的数值。
将此测试更改为
If txtRes <> "" And len(calVal) > 0 Then
但仍然使用 F8 的方法检查您的代码。
顺便说一句,txtRes = FNum + SNum
在技术上是正确的,但实际上令人困惑。上面的一位评论员将 txtRes 误认为是一个变量。更好的语法是在代码中包含默认的 属性。
txtRes.Value = FNum + SNum
我对 VBA 比较陌生,一直在努力学习它。我开始尝试编写一个计算器并对其进行编程以执行基本计算,例如加法、除法、减法和乘法。但是,当我尝试使用下面的代码执行这些功能时,计算器不会编译和执行上述计算。
Private Sub cmdBtnEql_Click()
On Error GoTo ErrOcccered
If txtDisplay = "Cannot divide by Zero" Then txtDisplay = Empty
If txtRes <> "" And calVal Then
FNum = Val(txtDisplay): SNum = Val(txtRes)
Select Case calVal
Case "Add"
txtRes = FNum + SNum
Case "Minus"
txtRes = FNum - SNum
Case "Multiplication"
txtRes = FNum * SNum
Case "Divide"
If SNum = 0 Then
txtRes = "Cannot divide by zero"
Else
txtRes = FNum / SNum
End If
Case Else
End Select
End If
ErrOcccered:
End Sub
但是,这个过程实际上并没有执行上述计算。我可以单击按钮,相应的数字会显示在用户表单的文本框中,而无需进行任何计算。这段代码不是我个人的,我正在使用我在网上找到的另一个代码,并试图理解 VBA 中的所有语法和语义是如何工作的。我感谢您的帮助!谢谢
在您的代码的这一行放置一个断点。
If txtRes <> "" And calVal Then
使用 F8 逐步执行您的代码并找出它到底做了什么。
你会发现它永远不会超过这条线,因为有一个测试 calVal
是否有一个非零的值。当然,calVal 应该包含一个词,例如“Add”,因此永远不能有零以外的数值。
将此测试更改为
If txtRes <> "" And len(calVal) > 0 Then
但仍然使用 F8 的方法检查您的代码。
顺便说一句,txtRes = FNum + SNum
在技术上是正确的,但实际上令人困惑。上面的一位评论员将 txtRes 误认为是一个变量。更好的语法是在代码中包含默认的 属性。
txtRes.Value = FNum + SNum