我制作了用户表单,因此我将用它来描述我的问题。用户表单中的算术运算
我想获得四个用户输入(产品成本,销售单位数量,退货单位数量和每单位修理费用),并计算6件事情,如总收入(产品成本×销售单位)和总退货成本(产品成本×退货单位数量)。
我该怎么写代码?
用户窗体的形象在这里:http://imgur.com/a/qc3Kk
我制作了用户表单,因此我将用它来描述我的问题。用户表单中的算术运算
我想获得四个用户输入(产品成本,销售单位数量,退货单位数量和每单位修理费用),并计算6件事情,如总收入(产品成本×销售单位)和总退货成本(产品成本×退货单位数量)。
我该怎么写代码?
用户窗体的形象在这里:http://imgur.com/a/qc3Kk
所以,这是我对这个解决方案。这不是一个非常复杂的程序来创建。总体而言,它是一个UserForm,遵循图像中的设计,用一段代码进行计算,一段代码确保文本框中的值输入是数字。该接口是标签和文本框的组合:
有该评估输入的值是否是NUMERICA并提醒你,如果它是不是每个文本框代码。每个例程都使用IsNumeric函数用于此目的,并且还可以查看文本框中是否有值。 AfterUpdate事件确保例程只在输入内容后运行。您可以选择为每个文本框分别创建一个例程,或者在每个文本框引用的模块中编写更加集成的例程。对于示例的目的:
Private Sub txtCost_AfterUpdate()
With UserForm1
With .txtCost
If Not IsNumeric(.Value) Or .Value = "" Then
MsgBox "Please enter a numeric value only!"
End If
End With
End With
结束子
Private Sub txtReturned_AfterUpdate()
With UserForm1
With .txtReturned
If Not IsNumeric(.Value) Or .Value = "" Then
MsgBox "Please ensure you enter only numeric values"
End If
End With
End With
End Sub
Private Sub txtTotalFix_AfterUpdate()
With UserForm1
With .txtTotalFix
If Not IsNumeric(.Value) Or .Value = "" Then
MsgBox "Please ensure you enter only numeric values"
End If
End With
End With
End Sub
Private Sub txtUnits_AfterUpdate()
With UserForm1
With .txtUnits
If Not IsNumeric(.Value) Or .Value = "" Then
MsgBox "Please ensure you enter only numeric values"
End If
End With
End With
End Sub
肉和例程的马铃薯也并不复杂。我直接使用每个文本框的值来吐出计算值。另外,你也可以选择使用变量(我把decalred x As Double,因为你可能处理的是很大的数字,但在这个例子中没有使用它)。该例程位于Module1中,并检查所有值是否都是具有相同IsNumeric函数的数字,并在公式中运行,如果它们中有任何一个为空或不是数字,则会提示您。我对你是如何计算储蓄或是否是你的标准并不积极,所以你可能需要调整。
Sub QA_prog()
Dim x As Double
With UserForm1
If IsNumeric(.txtCost.Value) And IsNumeric(.txtUnits.Value) _
And IsNumeric(.txtReturned.Value) And IsNumeric(.txtTotalFix.Value) Then
.lblEarn.Caption = .txtCost.Value * .txtUnits.Value
.lblTRC.Caption = .txtCost * .txtTotalFix
.lblProfit = .lblEarn.Caption - .lblTRC.Caption
.lblCostFix = .txtReturned * .txtTotalFix
.lblTE.Caption = .lblProfit - .lblCostFix
.lblSave.Caption = .lblTRC + .lblCostFix
If .lblSave.Caption > 5000 Then
.txtYorN.Text = "NO"
Else
.txtYorN.Text = "YES"
End If
Else
MsgBox "Double check your values!"
End If
End With
End Sub
最后,按钮。退出按钮关闭使用卸载程序:
Private Sub cmdExit_Click()
Unload UserForm1
End Sub
计算按钮调用QA子程序:
Private Sub cmdCalc_Click()
Module1.QA_prog
End Sub
要触发程序,你只需要一个按钮添加到电子表格,然后键入“UserForm1.show
”在其代码窗口中激活程序。
'txtTotalEarnings.Value = txtCostofProduct.Value * txtUnitsSold.Value'等等。请注意,我只是猜测文本框的名称。你有什么尝试? – tigeravatar
@tigeravatar在你对它们进行算术运算之前,你需要将这些字符串转换成数字。否则,你让VBA决定,[它可能不会做你想做的事](https://stackoverflow.com/q/44680791/1188513)。 –