Есть ли ограничение на размер стека, доступного для подпрограмм VBA?Пределы памяти подпрограмм в VBA
По какой-то нечетной причине, когда I Dim
6 или более Range
переменных, я получаю сообщение об ошибке, что в стеке больше места.
Я мог видеть, что Range
является интенсивным с точки зрения памяти, особенно большие несмежные, которые я использую, но мне любопытно, есть ли наилучшая практика, чтобы избежать ошибки.
Пример:
Dim RR As Range
'Dim TestArea As Range
'Dim foremenList As Range
'Dim workerList As Range
'Dim workers As Range
'Dim Foremen As Range
Dim i As Integer
Dim R As Range
Dim EmplList(0 To 100) As Variant
'Set TestArea = Sheet90.Range("b4:q8, b15:q19, b26:q30")
'Set foremenList = Sheet90.Range("V24:V30")
Set RR = Sheet90.Range("v24:x45")
i = 0
Если я раскомментировать эти заявления, я получаю сообщение об ошибке. Если я оставлю их прокомментированными, я не буду.
Единственный код в саб:
For Each R In RR.Cells
If Len(R.Value) > 0 Then
'EmplList(i) = R.Value
i = i + 1
End If
Next R
Sheet90.Range("b40").Value = "Test3"
Для справки это Excel VBA работает в Excel 2010 на Windows 7 ноутбук с 8 Гб оперативной памяти. Не монстр, но и не сумочка.
Никогда не видели этого и часто использовали больше диапазонов, чем 6 ... Что-то еще вероятно, проблема. –
Вы используете какие-либо глубокие рекурсии в своем суб? –
Нет рекурсии, одна для цикла. Вопрос отредактирован, чтобы добавить дополнительный код. –