Как упоминалось выше, очистка диапазона цветов перед выделением ячейки является самым быстрым способом.Но если цвета фона ваших ячеек установлены на что-то другое, то должно работать следующее:
Альтернативное решение: Сохраните расположение и цвет ячейки, чтобы выделить ячейку, а затем восстановите ее оригинал.цвет на каждом пробеге.Вы должны объявить местоположение за пределами сабвуфера, чтобы оно не исчезало после его завершения.Это помогло бы, если бы ваши цвета фона были чем-то другим.Проблема в том, что он работает только во время сеанса Excel, если закрыть и сохранить местоположение было бы потеряно, если вы не сохранили его на скрытом листе = ненужная сложность для этой задачи.
Dim OriginalCell As Range
Dim OriginalCol
Public Sub GenerateRandom()
Dim myRange As Range
Dim NewCell As Range
Set myRange = Range("C4:AA23")
For i = 1 To 500
myRange.Cells(i) = i
Next
For Each Cell In myRange
swapcell = 1 + Int(Rnd * 500)
savedValue = Cell.Value
Cell.Value = myRange.Cells(swapcell).Value
myRange.Cells(swapcell) = savedValue
Next
''''new code
Set NewCell = myRange.Cells(RndBetween(1, MyRange.Cells.Count))
If OriginalCell Is Nothing Then
Set OriginalCell = NewCell
OriginalCol = OriginalCell.Interior.Color
Else
OriginalCell.Interior.Color = OriginalCol
Set OriginalCell = NewCell
OriginalCol = OriginalCell.Interior.Color
End If
NewCell.Interior.Color = vbRed
'''''
End Sub
Напримечание: отправка диапазонов в массив и работа с массивом происходит намного быстрее, но это уже другая тема.Надеюсь, это поможет!