Vba 根据另一个单元格的数值更改x个单元格的颜色

Vba 根据另一个单元格的数值更改x个单元格的颜色,vba,excel,Vba,Excel,我有范围,我想突出显示我在单元格范围(“C5”)中输入的基于单元格范围的值。如果我在单元格“C5”中输入5,则我的范围内的5个单元格需要更改为黄色。 有人能帮你吗?你需要介绍一个计数器并计数: Public Sub TestMe() Dim myRange As Range Dim myCell As Range Set myRange = Range("H8,J8,L8,N8,H10,H10,J10,L10,N10,H12,J12,L12,N12

我有范围,我想突出显示我在单元格范围(“C5”)中输入的基于单元格范围的值。如果我在单元格“C5”中输入5,则我的范围内的5个单元格需要更改为黄色。


有人能帮你吗?

你需要介绍一个计数器并计数:

Public Sub TestMe()

    Dim myRange     As Range
    Dim myCell      As Range

    Set myRange = Range("H8,J8,L8,N8,H10,H10,J10,L10,N10,H12,J12,L12,N12,H14,J14,L14,N14") 

    Dim cnt     As Long
    Dim times   As Long
    times = Range("C2")

    For Each myCell In myRange    
        With myCell
            .Interior.Color = vbBlue
        End With

        cnt = cnt + 1
        If cnt = times Then Exit Sub            
    Next myCell

End Sub

其思想是每次代码循环时,计数器都会随着
1
而增加,因此
cnt=cnt+1
。如果它恰好循环N次
Range(“C2”)
,它将退出。

您可以使用
Range()
对象的
Areas()
属性:

Public Sub ColorCells()
    Dim iCell As Long

    With Range("H8,J8,L8,N8,H10,J10,L10,N10,H12,J12,L12,N12,H14,J14,L14,N14") ' reference your range
        For iCell = 1 To Range("C2").Value ' loop through needed areas
            .Areas(iCell).Interior.Color = vbYellow
        Next
    End With
End Sub
注意:在您的
MY_范围内
出现了两次“H10”

Public Sub ColorCells()
    Dim iCell As Long

    With Range("H8,J8,L8,N8,H10,J10,L10,N10,H12,J12,L12,N12,H14,J14,L14,N14") ' reference your range
        For iCell = 1 To Range("C2").Value ' loop through needed areas
            .Areas(iCell).Interior.Color = vbYellow
        Next
    End With
End Sub