Итак, я сделал забавный и простой макрос, который случайным образом выбирает значения R, G и B, пока не использует все возможные комбинации (пропуская повторы), и устанавливает значения цвета квадрата 10x10 для каждого нового цвета.
Единственная проблема в том, что я уперся в лимит на количество форматов ячеек. Майкрософт говорит, что предел должен быть около 64000, но я обнаружил, что это точно 65429 в пустой книге Excel 2013.
Я включил код четкого формата, но, похоже, он не имеет никакого эффекта:
Cells(X, Y).ClearFormats
Microsoft перечисляет некоторые разрешения, но 3 из 4 из них, по сути, «Не делайте слишком много форматов», а 4-й формат — использование стороннего приложения.
Неужели в VBA ничего нельзя сделать?
- A1: J10 напечатает новый цвет
- K1 напечатает процент завершения
- L1 напечатает количество используемых цветов
M1 напечатает количество повторений комбинации цветов.
Dim CA(255, 255, 255) As Integer Dim CC As Long Dim RC As Long Dim R As Integer Dim G As Integer Dim B As Integer Dim X As Integer Dim Y As Integer CC = 0 RC = 0 X = 1 Y = 1 Do While ColorCount < 16777216 R = ((Rnd * 256) - 0.5) G = ((Rnd * 256) - 0.5) B = ((Rnd * 256) - 0.5) If CA(R, G, B) <> 1 Then CA(R, G, B) = 1 'Step down to the next row 'If at the 10th row, jump back to the first and move to the next column If X < 10 Then X = X + 1 Else X = 1 If Y < 10 Then Y = Y + 1 Else Y = 1 End If End If Cells(X, Y).ClearFormats 'doesn't do what I hope :( Cells(X, Y).Interior.Color = RGB(R, G, B) CC = CC + 1 Cells(1, 11).Value = (CC / 16777216) * 100 Cells(1, 12).Value = CC Else RC = RC + 1 Cells(1, 13).Value = RC End If Loop
ColorCount
? - person user3598756   schedule 19.07.2016