Я ищу способ использования десятичного типа данных на листе 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
