2017-06-21 133 views
-2

我制作了用户表单,因此我将用它来描述我的问题。用户表单中的算术运算

我想获得四个用户输入(产品成本,销售单位数量,退货单位数量和每单位修理费用),并计算6件事情,如总收入(产品成本×销售单位)和总退货成本(产品成本×退货单位数量)。

我该怎么写代码?

用户窗体的形象在这里:http://imgur.com/a/qc3Kk

+2

'txtTotalEarnings.Value = txtCostofProduct.Value * txtUnitsSold.Value'等等。请注意,我只是猜测文本框的名称。你有什么尝试? – tigeravatar

+0

@tigeravatar在你对它们进行算术运算之前,你需要将这些字符串转换成数字。否则,你让VBA决定,[它可能不会做你想做的事](https://stackoverflow.com/q/44680791/1188513)。 –

回答

0

所以,这是我对这个解决方案。这不是一个非常复杂的程序来创建。总体而言,它是一个UserForm,遵循图像中的设计,用一段代码进行计算,一段代码确保文本框中的值输入是数字。该接口是标签和文本框的组合:

enter image description here

有该评估输入的值是否是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”在其代码窗口中激活程序。