Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何计算用户表单中的乘法和百分比?_Excel_Vba - Fatal编程技术网

Excel 如何计算用户表单中的乘法和百分比?

Excel 如何计算用户表单中的乘法和百分比?,excel,vba,Excel,Vba,我需要从图像中获得此表单代码的帮助(数量就是数量!)。当我按“calculate”(计算)在文本框4中显示一件折扣(文本框3)的价格(文本框2),同时在文本框4中显示金额(文本框1)乘以价格(文本框2)和折扣(文本框3)。 这样地: Textbox4=Textbox3(折扣)Textbox2 和 Textbox5=Textbox1*Textbox2(有折扣)Textbox3 我有第一个代码: Private Sub TextBox1_AfterUpdate() With TextBo

我需要从图像中获得此表单代码的帮助(数量就是数量!)。当我按“calculate”(计算)在文本框4中显示一件折扣(文本框3)的价格(文本框2),同时在文本框4中显示金额(文本框1)乘以价格(文本框2)和折扣(文本框3)。 这样地:
Textbox4=Textbox3(折扣)Textbox2


Textbox5=Textbox1*Textbox2(有折扣)Textbox3


我有第一个代码:

Private Sub TextBox1_AfterUpdate()
    With TextBox3
        .Text = format(Val(Replace(.Text, "%", vbNullString)) / 100, "#.0# %")
    End With
End Sub

Private Sub CommandButton1_Click()
    TextBox4.Text = Val(Replace(TextBox3.Text, "%", vbNullString)) / 100 * Val(TextBox2.Text)
End Sub

这是一个有点过火的变量,但它的测试和工作。从文本框中声明变量,然后在公式中使用变量名,可以更容易地看到实际的数学运算,而不是专注于数据转换

同样如上面的评论所述,我不会在文本框中包含%,但替换函数确实考虑到了这一点

Private Sub CommandButton1_Click()

Dim qty As Long         'Quantity
Dim discPct As Single    'Discount Percentage
Dim unitPrice As Single    'Single Normal Price
Dim discPrice As Single    'Single Price After Discount
Dim total As Single    'Total Qty * Discounted Single Price

qty = CSng(TextBox1.Text)
unitPrice = CSng(TextBox2.Text)
discPct = CSng(Replace(TextBox3.Text, "%", "")) / 100

discPrice = unitPrice - (discPct * unitPrice)
TextBox4.Value = discPrice

total = qty * discPrice
TextBox5.Value = total

End Sub

请澄清一下,在输入数量之前,您是否为TextBox2和TextBox3设置了值?为什么必须发生更新后事件?如果输入三个顶部框,然后单击计算。另外,您是否在实际文本框3中添加了“%”?我在文本框中输入数据,然后按“计算”,这是我的错,应该是“私有子文本框3_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)”,但如果您看到我在文本框2中输入价格和折扣以及文本框3时也有问题?!我没有得到你需要的东西。例如,1000的30%是700,但我得到了300,如何反转?1000的30%实际上是300。折扣是指你拿走了多少,价格是原价-折扣。好吧,我的英语有点差,但你能帮我学代码而不是数学吗?CLng converts有点问题,总是0而不是0,比如我的例子0.3。(30%)理论上是好的,应该有效,但是。。。我不知道怎么了!我应该使用单变量类型,而不是Long。你做得很好!!!只要能在正确的位置加上逗号,我很高兴你能通过。确保在discPct中包含“/100”。是的,我包含“/100”,但没关系。我还有一个问题,为什么你这么长,而其他人都是单身?!