【问题标题】:Looping through multiple rows循环遍历多行
【发布时间】:2020-06-14 23:24:00
【问题描述】:

我有 VBA 代码,它通过一个范围并根据预定义的条件更改单元格的颜色。该代码适用于两行(第 3 行和第 4 行)但是,我想再使用它 98 次。

Dim rCell As Excel.Range
Dim rRng As Range        
Set rCell = Range("AS3")

    For Each rCell In ws1.Range("AS3:BG3")
        If rCell.Value < Range("BP3").Value Or rCell.Value > Range("BO3").Value Then
            rCell.Select
            With Selection.Font
                .Color = -16776961
                .TintAndShade = 0
            End With
        End If
    Next rCell

Set rCell = Range("AS4")

    For Each rCell In ws1.Range("AS4:BG4")
        If rCell.Value < Range("BP4").Value Or rCell.Value > Range("BO4").Value Then
            rCell.Select
            With Selection.Font
                .Color = -16776961
                .TintAndShade = 0
            End With
        End If
    Next rCell

【问题讨论】:

  • 你想要range("AS3:BG101")
  • Set rCell = Range(...: 做作没有用,因为在For Each rCell ... 行再次设置了变量。顺便说一句,在使用 Range 时,您应该始终明确。也许你想要w1.Range(... 而不是隐含的 *ActiveSheet.*Range(...
  • 为什么不使用条件格式?

标签: excel vba loops foreach


【解决方案1】:

如果我理解正确,您希望 range("AS3:BG101")IF 语句引用当前的 rcell 行。这应该这样做。我还删除了您无关的范围设置和声明以及选择。

Dim rCell As Range        

    For Each rCell In ws1.Range("AS3:BG101") 'Larger range
        If rCell.Value < Range("BP" & rcell.row).Value Or rCell.Value > Range("BO" & rcell.row).Value Then 'Variable value
            With rcell.Font 'No need to select
                .Color = -16776961
                .TintAndShade = 0
            End With
        End If
    Next rCell

【讨论】:

  • 代码按预期工作,谢谢。我对 VBA 非常陌生,我所知道的大部分内容都是基于从录制的宏中研究生成的代码以及我使用 Python 编写脚本的一点经验。再次感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-23
  • 2011-07-19
  • 1970-01-01
  • 1970-01-01
  • 2010-12-02
  • 2021-09-23
相关资源
最近更新 更多