随机颜色随单元格内部颜色变化



我拼凑了一些简单的东西,看看会发生什么,当然我打破了excel。

Sub colourChange()
Dim r As Byte, g As Byte, b As Byte
On Error Resume Next
For l = 0 To 50
For j = 1 To 22
For k = 1 To 66
r = WorksheetFunction.RandBetween(0, 255)
g = WorksheetFunction.RandBetween(0, 255)
b = WorksheetFunction.RandBetween(0, 255)
Cells(j, k).Interior.Color = RGB(r, g, b)
Next k
Next j
Application.Wait Now + #12:00:03 AM#
Next l
End Sub

它开始很好,然后放慢速度到几乎停滞不前,最终甚至产生太多不同的单元格格式错误。

有什么方法可以加快速度并阻止错误吗?我查了一下,excel 应该支持 4000 种不同的单元格格式,我甚至不应该达到其中的一半!是记得以前的还是什么?这是怎么回事?

我认为 l= 0 到 50 不需要。 和应用程序屏幕更新=错误设置有助于更快地练习。 而且我想Excel对内部颜色的总数有限制。

Sub colourChange()
Dim r As Byte, g As Byte, b As Byte
Dim vR(), n As Integer
'Cells.Clear
n = 3000
ReDim vR(1 To n)
For i = 1 To n
r = WorksheetFunction.RandBetween(0, 255)
g = WorksheetFunction.RandBetween(0, 255)
b = WorksheetFunction.RandBetween(0, 255)
vR(i) = RGB(r, g, b)
Next i
Application.ScreenUpdating = False
For j = 1 To 500
For k = 1 To 100
Cells(j, k).Interior.Color = vR(WorksheetFunction.RandBetween(1, n))
Next k
Next j
Application.ScreenUpdating = True
End Sub

其他方式,首先练习sub getColor(((第一次只有一次(,然后 练习颜色(( .

Public vR()
Public n As Integer
Sub getColor()
Dim r As Byte, g As Byte, b As Byte
Dim i As Integer
'Cells.Clear
n = 3000
ReDim vR(1 To n)
For i = 1 To n
r = WorksheetFunction.RandBetween(0, 255)
g = WorksheetFunction.RandBetween(0, 255)
b = WorksheetFunction.RandBetween(0, 255)
vR(i) = RGB(r, g, b)
Next i
End Sub
Sub colourChange()
Dim j As Integer, k As Integer, m As Integer
Application.ScreenUpdating = False
For j = 1 To 500
For k = 1 To 100
m = WorksheetFunction.RandBetween(1, n)
Cells(j, k).Interior.Color = vR(m)
Next k
Next j
Application.ScreenUpdating = True
End Sub

它对我来说效果很好。请注意,您正在使用Wait函数,这会导致每个"帧":)延迟 3 秒加快速度的方法是将延迟从 3 秒减少到 1 秒:)

但是颜色不会改变那么多,因为随机数生成器是基于系统时间的,如果我们减少延迟,它的变化会更少。

您也可以使用函数Rnd()并将其乘以 256 而不是使用工作表函数。但我不确定,这会显着影响执行的持续时间。

最新更新