为什么VBA会改变我的十进制格式?

时间:2016-07-29 10:08:18

标签: excel-vba vba excel

我在PT-BR(逗号为十进制)Excel中创建了一个带有VBA功能的电子表格。一切正常。

但客户端(在EN-US上运行)有一个奇怪的问题:十进制数字,例如3.88888被复制为孔数,如388888.具有较少十进制情况的数字,如2.5,被复制为2,5,并且不被认为是数字。

我的功能就是复制值,如下所示:

  

ResultsSheet.Cells(row,3).Value = DataSheet.Cells(row,11).value

不幸的是,我无法重现此问题。在任何一种语言设置中,我都会得到正确的结果 - 这就是我所期望的。

任何有过这方面经验或向我提供一些信息的人都将不胜感激。我还会提供有关如何重现客户问题的线索。

1 个答案:

答案 0 :(得分:3)

正如你所说的那样,重新创建问题非常棘手,但使用某些检查进行类型转换应该有效,下面的代码段。

If InStr(DataSheet.Cells(Row, 11).Value, ",") > 0 Then
    'check if text contains a comma, and if so replace with "."
    ResultsSheet.Cells(Row, 3).Value = CDec(Replace(DataSheet.Cells(Row, 11).Text, ",", "."))
Else
    If IsNumeric(Cells(r, 11).Value) Then
    'check if numeric and ensure decimal value on ResultsSheet
        ResultsSheet.Cells(Row, 3).Value = CDec(DataSheet.Cells(Row, 11).Text)
    Else
    'if text then just copy
        ResultsSheet.Cells(Row, 3).Value = DataSheet.Cells(Row, 11).Value
    End If
End If

希望这能解决您的问题。 Boa Sorte ^^。
米格尔