В приведенном ниже коде, почему я получаю ошибку переполнения при x = i^3?VBA, другая ошибка переполнения
Dim i As Long, x As Long, s As Long, k As Byte
Do
i = i + 1
x = i^3
Dim n As Long, j As Long, b As String
b = CStr(x)
n = Len(b)
For j = 1 To n
s = s + Val(Mid$(b, j, 1))
Next
If s = i Then
k = k + 1
Debug.Print i
End If
Loop Until k = 6
Когда я вынуть часть кода, который начинается с Dim п до тех пор, и заканчивается цикл, и превратить его в вспомогательную функцию, а затем остальной код работает (то есть, нет ошибки переполнения в x = i^3).
Ваш код настолько неясны, что трудно понять, насколько' увеличивается i'. Существует ограничение на количество чисел, которое может удерживать 'Long'. Когда 'i' превышает 1290,' i^3' переполняется длинным. В моем ответе на ваш другой вопрос я предложил вам использовать десятичный подтип варианта для выполнения того, что вы пытаетесь сделать. Эта рекомендация по-прежнему сохраняется. –
Также - обратите внимание, что вы никогда не сбрасываете '' 'последовательные проходы через цикл. Если ваше намерение состоит в том, чтобы получить сумму цифр в 'x', тогда, возможно, вы должны отдохнуть' s' до 0 перед циклом for. –
Ваш комментарий, что мне нужно сбросить s до 0 до цикла, я думаю, что решает мою проблему. Еще раз спасибо! – TylerC