Я ищу способ использования десятичного типа данных на листе Excel. Я храню информацию о маршрутизации в виде числа. Маршруты могут состоять из 10 ходов в 50 разных местах. Это прекрасно работает в VBA с использованием десятичного типа данных, но я не могу заставить Excel принять эти числа, как только они будут переданы из VBA.
Кажется, по умолчанию для типа данных установлено значение Double, что недостаточно для точности моего приложения. Кроме того, строковое представление числа не будет достаточно, так как я отказываюсь от числа в листе.
Вот что у меня есть для генерации Route #:
'generate route# for each row
For i = intFirstRow To intLastRow
'initiate route#
decRoute = CDec(dblInitialRoute)
For j = 1 To 7
'only assign if labor
If arrLabor(i, j, 1) <> 0 And arrLabor(i, j, 1) <> "" Then
'some stations could lead to multiple machines
If arrLabor(i, j, 2) = 1 Then
sglRandom = Rnd()
If sglRandom < 0.8 Then
intValue = 1
Else
intValue = 3
End If
decRoute = decRoute + intValue * (50 ^ ((decRoute - Int(decRoute)) * 100)) - 0.01
ElseIf arrLabor(i, j, 2) = 10 Then
sglRandom = Rnd()
intValue = Int((sglRandom * 1000) / (1000 / 20)) + 10
Debug.Print intValue
decRoute = decRoute + intValue * (50 ^ ((decRoute - Int(decRoute)) * 100)) - 0.01
Else
intValue = arrLabor(i, j, 2)
decRoute = decRoute + intValue * (50 ^ ((decRoute - Int(decRoute)) * 100)) - 0.01
End If
End If
'exception
If arrLabor(i, j, 1) = "" And j = 2 Then
intValue = 44
decRoute = decRoute + intValue * (50 ^ ((decRoute - Int(decRoute)) * 100)) - 0.01
End If
Next
'write route#
Debug.Print CDec(Int(decRoute) + dblInitialRoute)
wsActive.Cells(i, intRouteCol).Value = CDec(Int(decRoute) + dblInitialRoute)
Next