0

下面的代码将搜索一行及其关联的列。对于第 7 行,如果它是“N”或“TR”并且如果第 12 行下方的所有条目都是空白的,则代码将隐藏整个列。

但是,我仍然需要一些进一步的帮助!

  1. 如果第 7 行中有“N”或“TR”。如果在任何单元格写入了某些内容(而不是单独放置),我可以在第 7 行中以黄色突出显示其关联的单元格吗?

  2. 如果第 7 行有“Y”,如果有任何单元格,我可以用黄色突出显示第 7 行中的相关单元格吗?

太感谢了!特别感谢 KazJaw 之前关于类似问题的帖子

Sub checkandhide()

Dim r As Range

Dim Cell As Range

Set r = Range("A7", Cells(7, Columns.Count).End(xlToLeft))

For Each Cell In r

    If Cell.Value = "N" Or Cell.Value = "TR" Then
        If Cells(Rows.Count, Cell.Column).End(xlUp).Row < 13 Then
            Cell.EntireColumn.Hidden = True
        End If
    End If
Next

End Sub

附上电子表格示例

4

1 回答 1

0

在这里,您有代码的改进版本(尽管我可能需要进一步说明......请阅读下文)。

Sub checkandhide()

    Dim r as Range, Cell As Range, curRange As Range

    Set r = Range("A7", Cells(7, Columns.Count).End(xlToLeft))

    For Each Cell In r

        Set curRange = Range(Cells(13, Cell.Column), Cells(Rows.Count, Cell.Column)) 'Range from row 13 until last row in the given column
        If Cell.Value = "N" Or Cell.Value = "TR" Then
            If Application.CountBlank(curRange) = curRange.Cells.Count Then
                Cell.EntireColumn.Hidden = True
            Else
                Cell.Interior.ColorIndex = 6 'http://dmcritchie.mvps.org/excel/colors.htm
            End If
        ElseIf Cell.Value = "Y" Then
            If Application.CountBlank(curRange) > 0 Then
                 Cell.Interior.ColorIndex = 6 'http://dmcritchie.mvps.org/excel/colors.htm
            End If
        End If
    Next

End Sub

我不确定我是否正确理解了您的说明,因此我将在此处描述此代码的确切作用;请评论任何不完全符合您要求的问题,以便我可以相应地更新代码:

它查找 range 中的所有单元格r

  • 如果给定的单元格(可能在第 7 行或在其下方的任何其他行中)满足条件之一,则将执行相应的操作。
  • 部分条件取决于curRange,它定义为从第 13 行到电子表格末尾的所有行。
  • 具体条件:
    a) 如果当前单元格的值为 N 或 TR。如果其中的所有单元格curRange都是空白的,则当前列是隐藏的。如果至少有一个非空白单元格,则给定单元格的背景颜色将设置为黄色。
    b) 如果当前单元格的值为Y,并且至少有一个单元格curRange不是空白的,则将背景单元格的背景颜色设置为黄色。
于 2013-07-05T09:40:39.137 回答