Я написал некоторый код для вычисления пустых ячеек со значением цвета по умолчанию, которые находятся в окружении черных ячеек (interior.color).
Option Explicit
Private arr(1 To 20, 1 To 20) As Boolean
Private pocet As Integer
Private Sub CommandButton1_Click()
Dim x As Integer
Dim y As Integer
Dim i As Integer, j As Integer
Dim dotaz As Integer
Erase arr()
pocet = 0
x = Worksheets("List2").Range("Y1").Value
y = Worksheets("List2").Range("Y2").Value
Worksheets("List2").Cells(y, x).Interior.Color = RGB(0, 255, 0)
dotaz = MsgBox("Pokračovat?", vbYesNo)
If dotaz = vbYes Then
vyplnit x, y
Else
End If
MsgBox pocet
End Sub
Private Sub vyplnit(x As Integer, y As Integer) 'rekurzivní funkce
If x < 1 Or x > 20 Or y < 1 Or y > 20 Then
Exit Sub
End If
If arr(x, y) = True Or Worksheets("List2").Cells(y, x).Interior.Color = vbBlack Then
Else
arr(x, y) = True
pocet = pocet + 1
vyplnit x + 1, y
vyplnit x - 1, y
vyplnit x, y + 1
vyplnit x, y - 1
End If
Это работает отлично.переменная «pocet» содержит информацию о том, сколько клеток находится внутри области.Однако, когда я использую эту функцию в более высоком масштабе, я получаю ошибку 28 (Недостаточно места в стеке).что вызвано слишком большим количеством стеков функций (Functionception).Я думал о какой-то оптимизации, чтобы не получить ошибку 28, но не смог понять какую-либо.Есть намеки?