2017-04-27 25 views
0

我想將其類型的貨幣值添加到Excel表單中。我爲此創建了以下代碼片段。使用visual basic包含currecny的單元格的更改數字格式

Public Sub WorkSheetForCurrencies(ByRef ProductsCollection As VBA.Collection, ByRef cur As String, ByRef ExgRate As Double, ByRef symbol As String) 

Dim index As Long 
Dim objProduct As Product 

index = 2 
For Each objProduct In ProductsCollection 

    If symbol = "£" Then 
    'Way 01: 
     mobjCSVWorkSheet.Cells(index, 8).NumberFormat = "-[$£-809]* #,##0.00_-;-[$£-809]* #,##0.00_-;_-[$£-809]* " - "??_-;[email protected]_-" 
    ElseIf symbol = "$" Then 
    'Way 02: 
     mobjCSVWorkSheet.Cells(index, 8).Select 
     Selection.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* " - "??_);_(@_)" 
    ElseIf symbol = "€" Then 
     mobjCSVWorkSheet.Cells(index, 8).NumberFormat = "_([$€-2] * #,##0.00_);_([$€-2] * (#,##0.00);_([$€-2] * " - "??_);_(@_)" 
    End If 

    mobjCSVWorkSheet.Cells(index, 8) = objProduct.SalesUnitPrice * CCur(ExgRate) 
    index = index + 1 
Next objProduct 
End Sub 

我已經嘗試了兩種方法來更改數字格式在上面的代碼。但那些給類型不匹配錯誤。請告訴我爲了更改單元格編號格式我必須更改。 謝謝

回答

1

這是你的問題:

"-[$£-809]* #,##0.00_-;-[$£-809]* #,##0.00_-;_-[$£-809]* " - "??_-;[email protected]_-" 

這個計算結果爲

"-[$£-809]* #,##0.00_-;-[$£-809]* #,##0.00_-;_-[$£-809]* " 

減去

"??_-;[email protected]_-" 

因爲你是在一個字符串進行運算,它會嘗試將雙方轉換爲數字值,並失敗。

嘗試加倍雙引號,例如

"-[$£-809]* #,##0.00_-;-[$£-809]* #,##0.00_-;_-[$£-809]* "" - ""??_-;[email protected]_-" 
+0

謝謝你的回答。它解決了這種類型的不匹配錯誤。我還有另外一個問題,我以.csv格式保存了excel表格,當我用數字作爲貨幣(按照前面的代碼)查看添加的單元格時,當我點擊Excel表格中的單元格時,它們只是'普通'類型的單元格,而不是貨幣類型。我需要做些什麼來改變它? –

+1

保存爲CSV只能保存數據。您必須手動重新格式化每列。 –

相關問題