Mam problem. Mianowicie kod, który zaraz wkleje liczy liczbę sąsiadów komórek, w których są jedynki. W zależności ile tych komórek o wartości jeden jest u sąsiadów to dana komórka albo zmienia wartosć na 1(gdy jest 3 sąsiadów itp.) lub zmienia na 0 lub pozostaje przy swojej poprzedniej wartości. Gdy zmieni wartosć na 1 to automatycznie komórka zmieni kolor na czarny, a gdy ma wartosc 0 to bez koloru. Ogólnie problem tkwi w tym, że makro wykonuje się komórka po komórce i to trwa zdecydowanie za długo, jak zrobić żeby przeliczyło od razu wszystkie komórki?
Problem chyba tkwi w tej zmianie koloru, bo jak go usuniemy z kodu to makro wykonuje się tak szybko jak powinno.
index koloru nie należy do tablicy tabl, jak go tam umieścić?
próbowałem coś takiego, ale nie da się, wyskakuje błąd
Dim i As Variant, j As Variant, tabl
If UserForm1.TextBox1.Value = 1 Then 'jesli tylko jedno przejscie planszy(jedna petla)
With UserForm1.Spreadsheet1.Worksheets(1)
tabl = .Range(.Cells(2, 2), .Cells(53, 53))
Application.ScreenUpdating = False
For i = 2 To 50
For j = 2 To 50
If tabl(i, j) = 1 Then
If tabl(i - 1, j) + tabl(i - 1, j - 1) + tabl(i - 1, j + 1) + _
tabl(i, j + 1) + tabl(i + 1, j + 1) + tabl(i + 1, j) + _
tabl(i + 1, j - 1) + tabl(i, j - 1) = 3 _
Or tabl(i - 1, j) + tabl(i - 1, j - 1) + tabl(i - 1, j + 1) + _
tabl(i, j + 1) + tabl(i + 1, j + 1) + tabl(i + 1, j) + _
tabl(i + 1, j - 1) + tabl(i, j - 1) = 2 Then
tabl(i, j) = 1
.Cells(i, j).Interior.ColorIndex = 1
Else
tabl(i, j) = 0
.Cells(i, j).Interior.ColorIndex = xlNone
End If
Else
If tabl(i - 1, j) + tabl(i - 1, j - 1) + tabl(i - 1, j + 1) + tabl(i, j + 1) _
+ tabl(i + 1, j + 1) + tabl(i + 1, j) + tabl(i + 1, j - 1) + tabl(i, j - 1) = 3 Then
tabl(i, j) = 1
.Cells(i, j).Interior.ColorIndex = 1
Else
tabl(i, j) = 0
.Cells(i, j).Interior.ColorIndex = xlNone
End If
End If
Next j
Next i
.Range(.Cells(1, 1), .Cells(51, 51)) = tabl
End WithProblem chyba tkwi w tej zmianie koloru, bo jak go usuniemy z kodu to makro wykonuje się tak szybko jak powinno.
.Cells(i, j).Interior.ColorIndex = xlNoneindex koloru nie należy do tablicy tabl, jak go tam umieścić?
próbowałem coś takiego, ale nie da się, wyskakuje błąd
.tabl(i, j).Interior.ColorIndex = xlNone