(注:本块代码,想实现的目的是: 在一石大小的印刷面积内,能最大数量的印刷个数用PrintMax计出,然后把PrintMax用来计算一个txtqty文本框内输入的数值共需要多少石,并用PrintDan计出,然后根本所计出的PrintDan所在区间,求出最终的印刷成本。)之前有请教过另外一段程式的错误原因,是因为变量的申明Single 及Double错误,在大胡子,老驴等朋友的指点下得以解决,此段代码我也以同样的思路去找错,并将变量均申明为Double,但是运行结果是:得到的是空值?
'part2 求印刷成本Dim PVCPrint(3) As Double, PrintDan As Double, PrintMax As Double, PrintCost As Double
'PVCPrint(3)及PrintMAX是一石能印刷的数量, PrintDan是订单数量所印刷的石数,PrintCost是单个产品的印刷成本PVCPrint(0) = (Int(33 / (H + 0.6)) * Int(45 / (W + 0.7)))
PVCPrint(1) = (Int(33 / (H + 0.7)) * Int(45 / (W + 0.6)))
PVCPrint(2) = (Int(33 / (W + 0.6)) * Int(45 / (H + 0.7)))
PVCPrint(3) = (Int(33 / (W + 0.7)) * Int(45 / (H + 0.6))) PrintMax = PVCPrint(0)
For i = 0 To 3 Step 1
If PVCPrint(i) > PrintMax Then
PrintMax = PVCPrint(i)
End If
Next i
PrintDan = Val(txtqty.Text) / PrintMax
If 0 < PrintDan <= 200 Then
PrintCost = 500 / Val(txtqty.Text)
ElseIf 200 < PrintDan <= 600 Then
PrintCost = 600 / Val(txtqty.Text)
ElseIf 600 < PrintDan <= 1000 Then
PrintCost = 800 / Val(txtqty.Text)
ElseIf 1000 < PrintDan <= 1500 Then
PrintCost = 1200 / Val(txtqty.Text)
ElseIf 1500 < PrintDan <= 3000 Then
PrintCost = 150 / Val(txtqty.Text)
ElseIf 3000 < PrintDan <= 10000 Then
PrintCost = 0.5 / PrintMax
Else
PrintCost = 0.4 / PrintMax
MsgBox "印刷成本为:" & PrintCost
End If
'part2 求印刷成本Dim PVCPrint(3) As Double, PrintDan As Double, PrintMax As Double, PrintCost As Double
'PVCPrint(3)及PrintMAX是一石能印刷的数量, PrintDan是订单数量所印刷的石数,PrintCost是单个产品的印刷成本PVCPrint(0) = (Int(33 / (H + 0.6)) * Int(45 / (W + 0.7)))
PVCPrint(1) = (Int(33 / (H + 0.7)) * Int(45 / (W + 0.6)))
PVCPrint(2) = (Int(33 / (W + 0.6)) * Int(45 / (H + 0.7)))
PVCPrint(3) = (Int(33 / (W + 0.7)) * Int(45 / (H + 0.6))) PrintMax = PVCPrint(0)
For i = 0 To 3 Step 1
If PVCPrint(i) > PrintMax Then
PrintMax = PVCPrint(i)
End If
Next i
PrintDan = Val(txtqty.Text) / PrintMax
If 0 < PrintDan <= 200 Then
PrintCost = 500 / Val(txtqty.Text)
ElseIf 200 < PrintDan <= 600 Then
PrintCost = 600 / Val(txtqty.Text)
ElseIf 600 < PrintDan <= 1000 Then
PrintCost = 800 / Val(txtqty.Text)
ElseIf 1000 < PrintDan <= 1500 Then
PrintCost = 1200 / Val(txtqty.Text)
ElseIf 1500 < PrintDan <= 3000 Then
PrintCost = 150 / Val(txtqty.Text)
ElseIf 3000 < PrintDan <= 10000 Then
PrintCost = 0.5 / PrintMax
Else
PrintCost = 0.4 / PrintMax
MsgBox "印刷成本为:" & PrintCost
End If
PVCPrint(0) = 33 / (H + 0.6) * 45 / (W + 0.7)
PVCPrint(1) = 33 / (H + 0.7) * 45 / (W + 0.6)
PVCPrint(2) = 33 / (W + 0.6) * 45 / (H + 0.7)
PVCPrint(3) = 33 / (W + 0.7) * 45 / (H + 0.6)
可能你的代码有on error resume next 掩盖了报错,注释了再运行就知道了
2) Val(txtqty.Text) 为 0 或负数的情况没考虑
3) MsgBox 应该在 End If 后面
二)PVCPrint及PrintMax如果较大会导致结果为0这点没考虑到,所以这是一个问题,我已经补充;
三)Val(txtqty.Text)为0或负数的情况没有考虑进去,这也是不足之处,已经补充;
四)MsgBox应该在End if 后面,这是语序错误,也是导致我运行无结果的最关键错误!再次感谢两位朋友的指点!工作顺利!