【问题标题】:Color cells right to left in vba loopvba循环中从右到左的颜色单元格
【发布时间】:2019-05-11 22:46:54
【问题描述】:

尝试创建一个循环,首先选择范围 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

代码中带有 cmets Example Row 1、Example Row 2、Example Row 3 的行是我想要在循环中实现的目标的开始,直到起点和终点之间的范围差为 0。

【问题讨论】:

  • 所以T17:T35 是第一个范围。循环中的下一个范围是什么?你能展示一些样本数据的前后屏幕截图吗?你的代码没有设置循环,你的解释也不是很清楚,至少对我来说不是
  • 为什么一定要R1C1?这是由于对如何将两个变量放入.Range 的理解有限吗?
  • @urdearboy 更新了问题以包含循环意图。

标签: excel vba


【解决方案1】:

试试这个,让我们知道这是否符合您的要求。

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

【讨论】:

  • 这很酷。不知道它是如何发生的,但它很酷。谢谢。
  • 删除了 If 语句,因为它实际上没用
【解决方案2】:

我假设 'R19:S33' 是一个错字,而您实际上是指 'R19:R33'

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    相关资源
    最近更新 更多