Интересно, я могу воспроизвести это.Это происходит потому, что столбцы имеют тип Currency
.
По-видимому, Excel, как обычно, хочет быть более умным, чем полезно для вас, и предполагает, что в валюте всегда есть два знака после запятой и округления.
Чтобы легко воспроизвести, используйте этот код:
With xlSheet
i = 7
.Range("F" & i).Value = CDbl(1.2345) ' Result: 1.2345
.Range("G" & i).Value = CCur(1.2345) ' Result: 1.23 €
End With
Обратите внимание, что CCur(1.2345)
в Access по-прежнему 1.2345
.
Чтобы решить эту проблему, преобразуйте в Double
передзапись в Excel, а затем формат в качестве валюты в Excel (с 2 или 4 десятичными знаками, в обоих случаях число фактически будет иметь все 4 знака после запятой):
With .Range("C" & i)
.Value = CDbl(Nz(rs1!PreviousPrice, 0))
.NumberFormat = "#,##0.0000 $"
End With