2015-06-09 2 views
1

Я хочу бесконечный цикл в VBA (раньше я делал это на Java и C++). Я продолжаю получать «Overflow» с VBCritical красным кругом X.Ошибка переполнения VBA 6 Переполнение (создание бесконечной петли)?

Вот мой код. Ошибка <> 0 должна распознавать переполнение и игнорировать ее, чтобы макрос продолжал цикл бесконечно, но я все равно получаю переполнение VBCritical MsgBox.

Я хочу напечатать номера в столбце A. Эта часть работает прямо сейчас: она печатает «2».

Вот мой код:

Sub InfiniteLoop() 
Dim counter As Integer 
counter = 1 
Do While counter > 0 
    counter = counter + 1 

Loop 
If Error <> 0 Then 
    Do While counter > 0 
    counter = counter + 1 
    Cells(counter, "A").Value = counter 
    Loop 
End If 
End Sub 
+0

Вам нужно будет сбросить 'counter' в 1 ... это не лучший способ сделать то, что вы пытаетесь сделать, если вы объясните больше, будут лучшие альтернативы –

+0

@alex Как бы сбросить счетчик на 1? Я пытаюсь найти самый простой способ создания бесконечного цикла, который выводит последовательные целые числа, каждый раз добавляя 1 к счетчику. –

+0

целое число может содержать только столько данных, я предполагаю, что вы получаете ошибку из-за большого числа в счетчике. Если вы сделали что-то вроде if counter> 30000, тогда counter = 1 .... Когда вы получите ошибку, какое значение находится в счетчике, а какая строка - ошибка? – 99moorem

ответ

0

Не могли бы вы не просто делать это? и не увеличивать счетчик вообще?

Sub InfiniteLoop() 
Dim counter As Integer 
counter = 1 
Do While counter > 0 

Loop 
End Sub 
+0

, который работает, он использовал 70% моего процессора, прежде чем он прекратил отвечать. –

1

Для цикла, который будет выполняться из 0..32767 повторно (максимальное целое число может содержать)

Do While True 
    counter = (counter + 1) Mod 32768 
    ... 
Loop 

Если вы тусклый counter как Long максимум будет 2147483647.

Смежные вопросы