2014-11-23 118 views
0
Case "Labour" 
      TxtBUP1.Text = "£" & "20.00" & "/Hr" 

Unitcost = Val(TxtBUP1.Text) * Val(CBQty1.Text) 
    TxtBCost1.Text = Str(Unitcost) 
    'Individual Cost [Value + Qty] 

我的主要焦点是使用附加货币符号(£和/ Hr)计算最终值,所以我对您的问题基本上是否有一种方法可以将编码主要集中在“20.00”,但仍显示与货币sybmols结束输出?使用货币符号计算价值

+1

删除传统的VB6东西('Val','Str')并使用内置的.NET函数和格式。 [标准数字格式字符串](http://msdn.microsoft.com/en-us/library/dwhawy9k%28v=vs.110%29.aspx)和[自定义数字格式字符串](http://msdn.microsoft .com/en-us/library/vstudio/0c899ak8%28v = vs.100%29.aspx)有大量信息。 – Tim 2014-11-23 17:19:30

回答

0

如果你真的不想/不能使用内置的功能货币或时间格式,如果你的数据总是以同样的格式(即currency symbol + value + per hour在这个例子中,但无论如何,“可预测的”) ,那么你可以添加到您的项目:

的字符串 - >数函数 “清理”,从货币符号和“每小时”符号的价值,在双类型,因此返回它:

Public Function StringToNumber(ByVal stringValue As String) As Double 

    stringValue = stringValue.Replace("£", "") 
    stringValue = stringValue.Replace("/Hr", "") 
    Convert.ToDouble(stringValue) 
    Return stringValue 

End Function 

一个数字 - >字符串函数重新写在最后的货币符号和“每小时”:

Public Function NumberToString(ByVal myValue As Double) As String 

    Return "£" & myValue & "/Hr" 

End Function 

这样,你就可以通过简单地使用这些执行所有你想要的操作两个功能,将允许一个数据点转化为你的快乐(要使用到的代码):

Public Sub yourProcedure() 

    Dim myString As String : myString = "£20.00/Hr" 
    MsgBox("If I add 10 GBP per hour, the hourly pay will be " & NumberToString(StringToNumber(myString) + 10)) 

End Sub 

这是想法,如果有自定义值,如“货币/价值/每小时”。我让你管理来自不同货币符号或不同时间度量的“每小时”可能出现的复杂性。