代码之家  ›  专栏  ›  技术社区  ›  sayth

在VBA循环中从右向左着色单元格

  •  0
  • sayth  · 技术社区  · 6 年前

    尝试创建一个循环,首先选择范围t17:t35并将其变为黄色rgb(255、235、59)。

    然后向左循环,在顶部添加1个计数,并从底部为每列删除1个,直到没有要着色的单元格为止。

    Sub Smile()
    
    Dim Counter As Integer
    Dim Column As Integer
    Dim Row As Integer
    
    Counter = 18
    Row = 18
    Column = 20
    
    Worksheets("Sheet1").Range("A:BB").ColumnWidth = 1.25
    Worksheets("Sheet1").Range("1:200").RowHeight = 8
    Worksheets("Sheet1").Range("A1:BB200").Interior.Color = RGB(135, 206, 235)
    Worksheets("Sheet1").Range("U16:AA56").Interior.Color = RGB(255, 235, 59)
    'Worksheets("Sheet1").(R[17]C[20]).Interior.Color = RGB(255, 235, 59)
    Worksheets("Sheet1").Range("T17:T56").Interior.Color = RGB(255, 235, 59) 'Example Row 1
    Worksheets("Sheet1").Range("S18:S55").Interior.Color = RGB(255, 235, 59) 'Example Row 2
    Worksheets("Sheet1").Range("R19:R54").Interior.Color = RGB(255, 235, 59) 'Example Row 3
    
    'Do While Counter > 0
    '    Worksheet.Range(R[Row]C[Column]:T" & Counter + 18).Interior.Color = RGB(255, 235, 59)
    '    Counter -1
    'Loop
    End Sub
    

    带注释的代码中的行示例行1、示例行2、示例行3是我希望在循环中实现的目标的开始,直到起点和终点之间的范围差为0。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Display name    6 年前

    Option Explicit
    
    Sub colorss()
        Dim R1 As Range: Set R1 = Range("T17:T35")
    
        Do While R1.Count > 1
            R1.Interior.Color = RGB(255, 235, 59)
            If R1.Count = 2 Then
                Set R1 = R1.Offset(1, -1).Resize(1, 1)
            Else
                Set R1 = R1.Offset(1, -1).Resize(R1.Count - 2, 1)
            End If
        Loop
    
    End Sub
    

    Option Explicit
    
    Sub colorss()
        Dim R1 As Range: Set R1 = Range("T17:T35")
        R1.Interior.Color = RGB(255, 235, 59)
        Do While R1.Count > 2
            Set R1 = R1.Offset(1, -1).Resize(R1.Count - 2, 1)
            R1.Interior.Color = RGB(255, 235, 59)
        Loop
    End Sub
    
        2
  •  1
  •   user10773628    6 年前

    Dim i As Long, ext As Long, srng As Range
    
    With Worksheets("Sheet1")
        .Range("A:BB").ColumnWidth = 1.25
        .Range("1:200").RowHeight = 8
        .Range("A1:BB200").Interior.Color = RGB(135, 206, 235)
        .Range("U16:AA56").Interior.Color = RGB(255, 235, 59)
        Set srng = .Cells(17, "T")      'start at T17
        ext = 19                        'start with 19 rows
        For i = 0 To ext Step 2
            srng.Offset(i / 2, -i / 2).Resize(ext - i, 1).Interior.Color = RGB(255, 235, 59)
        Next i
    End With
    
    推荐文章