2014-11-23 116 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 

這是想法,如果有自定義值,如「貨幣/價值/每小時」。我讓你管理來自不同貨幣符號或不同時間度量的「每小時」可能出現的複雜性。