我已经编写了一些代码来计算具有默认颜色值的空单元格,这些单元格中的黑色单元格(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,但是却一无所获。有提示吗?