excel vba 在a1到j10区域内选中指定个数的单元格并给这些单元格赋随机颜色

excel vba 在a1到j10区域内选中指定个数的单元格并给这些单元格赋随机颜色,每个单元格颜色都不一样的。怎么写代码,求助~

Sub Macro1()
Dim arr(1 To 100)
Dim Vcolor As String
Dim i, j, k, n, m As Integer
For Each Rng In Range("A1:J10")
n = 0
For Each RnB In Range("A1:J10")
n = n + 1
arr(n) = RnB.Interior.Color
Next
i = WorksheetFunction.RandBetween(1, 51) * 5
j = WorksheetFunction.RandBetween(1, 51) * 5
k = WorksheetFunction.RandBetween(1, 51) * 5
Rng.Interior.Color = RGB(i, j, k)
Vcolor = Rng.Interior.Color
Y = "YES"
Do While Y = "YES"
i = WorksheetFunction.RandBetween(1, 51) * 5
j = WorksheetFunction.RandBetween(1, 51) * 5
k = WorksheetFunction.RandBetween(1, 51) * 5
Rng.Interior.Color = RGB(i, j, k)
Vcolor = Rng.Interior.Color
For m = 1 To 100
If arr(m) > Vcolor Then
Y = "NO"
Else
Exit For
Y = "YES"
End If
Next
Loop
Next
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-06-11

插入按钮,执行程序如下 :

Sub 单元格随机涂色_Click()
x = InputBox("输入选择单元格的个数:")
For i = 1 To 10    '将区域单元格去色
    For j = 1 To 10
        Cells(j, i).Interior.ColorIndex = 0
    Next
Next
For k = 1 To x    '对输入选择单元格的个数进行填色
    l = 0
    Do While l = 0
        i = Application.RandBetween(1, 10)    '随机选择
        j = Application.RandBetween(1, 10)
        If Cells(i, j).Interior.ColorIndex = -4142 Then    '无色则填色
            Cells(i, j).Interior.ColorIndex = (k + 2 Mod 56) + 1
            l = 1
        End If
    Loop
Next
End Sub

追问

非常感谢啦~有没有办法让填充颜色的单元格一行一行排下来而不是随机选择的位置

本回答被网友采纳
相似回答