这是我的第一篇文章,我对vba非常新,所以请保持温柔。 我创建了一个用户表单,其中包含Territory(TextBox5),Weight(TextBox1),City(TextBox3)和Cost(TextBox4)。这是一个计算某个货运公司的运输成本的表格。有与体重和城市相关的费率。如果城市在领土内,则每100磅的速率最高可达9000磅。但是,如果费率超出地域,则每100磅的费率更高,最高不超过9000磅。 领土内至少有15.00美元,境外有至少$ 20.00。 这只是我试过的方式......
Private Sub TextBox4_Change()
Dim A As Single
A = Val(TextBox1.Text)
If (TextBox5.Text = "Within Territory" And TextBox1.Text <= 233) Then
TextBox4.Text = TextBox1.Text * 6.5 / 100 * 1.3
If (TextBox5.Text = "Out of Territory" And TextBox1.Text <= 200) Then
TextBox4.Text = TextBox1.Text * 10 / 100 * 1.3
End If
End If
End Sub
我想通过并将所有费率放在不同的权重中,但我甚至无法让这部分工作。 100的划分是每100磅。 1.3是30%的燃油附加费。
境内的费率如下......最低15.00 .... 6.50每100到999lbs ... 6.00从1000到1999磅......从2000到最大9000磅。是5.50
对于领土之外的费率是:最低20.00 ...相同的磅。频率为10.00,9.25,8.00。
任何有关正确方向的帮助或建议都将非常感谢!! 谢谢!
答案 0 :(得分:1)
采取更有条理的方法将有所帮助。
If
权重Then
计算费率Else
考虑下一个频段TextBox4
更改(费用)时执行此操作。可能在任何其他文本框更改。尝试此操作(从Territory或Weight文本框更改事件调用)
Private Sub TextBox4_Change()
Dim weight As Single
Dim cost As Single
Dim rates(1 To 3) As Single
Dim bands(1 To 3) As Single
Dim min As Single
Dim surcharge As Single
weight = Val(TextBox1.Text)
If weight <= 0# Then
' deal with invalid weight
TextBox4.Text = "Invalid Weight"
Exit Sub
End If
If TextBox5.Text = "Within Territory" Then
rates(1) = 6.5
rates(2) = 6#
rates(3) = 5.5
min = 15#
ElseIf TextBox5.Text = "Out of Territory" Then
rates(1) = 10#
rates(2) = 9.25
rates(3) = 8#
min = 20#
Else
Exit Sub
End If
bands(1) = 1000#
bands(2) = 2000#
bands(3) = 9000#
surcharge = 1.3
If weight > bands(3) Then
TextBox4.Text = "Weight too big"
Exit Sub
End If
If weight < bands(1) Then
cost = weight * rates(1) / 100#
Else
cost = bands(1) * rates(1) / 100#
If weight < bands(2) Then
cost = cost + (weight - bands(1)) * rates(2) / 100#
Else
cost = cost + (bands(2) - bands(1)) * rates(2) / 100#
If weight <= bands(3) Then
cost = cost + (weight - bands(2)) * rates(3) / 100#
End If
End If
End If
cost = cost * surcharge
If cost < min Then cost = min
TextBox4.Text = Format(cost, "#,##0.00")
End Sub
答案 1 :(得分:0)
如果此语言是强类型语言(如java),则需要将文本显式更改为整数才能计算价格。您的比例似乎也是一个滑动比例。如果您不希望数字减少,则必须将初始金额(区域内15美元,外部区域20美元)添加到您获得的值。在这种情况下,您可以使用if-else语句,如下所示(这是伪代码,而不是实际的vba文本):If(文本框5 =“在区域内”)然后str2num(文本框4)+ = 15。然后你会在循环中根据需要进行其他乘法和加法。否则,str2num(文本框4)+ = 20并从那里进行其他计算。希望这会有所帮助。
答案 2 :(得分:0)
如果我理解你问题的主要部分,我将用它作为确定成本的基础。 请参阅我在下面输入的步骤:
Private Sub TextBox4_Change() Dim AX As Single AX = Val(textBox1.Text) 如果(TextBox5.Text =“在Territory内”)那么 选择Case Val(textBox1.Text) 案例100至999 Val(TextBox4.Text)= AX * 6.5 / 100 * 1.3 案例1000至1999年 Val(TextBox4.Text)= AX * 6#/ 100 * 1.3 案例2000至9000 Val(TextBox4.Text)= AX * 5.5 / 100 * 1.3 Case Else 结束选择
ElseIf (TextBox5.Text = "Out of Territory") Then
Select Case Val(textBox1.Text)
Case 100 To 999
Val(TextBox4.Text) = AX * 10 / 100 * 1.3
Case 1000 To 1999
Val(TextBox4.Text) = AX * 9.5 / 100 * 1.3
Case 2000 To 9000
Val(TextBox4.Text) = AX * 8 / 100 * 1.3
Case Else
End Select
End If
End Sub