2017-04-27 21 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只能保存数据。您必须手动重新格式化每列。 –

相关问题