Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 循环行,如果3个单元格符合条件,则高亮显示单元格,如果不符合条件,则隐藏行_Excel_Vba - Fatal编程技术网

Excel 循环行,如果3个单元格符合条件,则高亮显示单元格,如果不符合条件,则隐藏行

Excel 循环行,如果3个单元格符合条件,则高亮显示单元格,如果不符合条件,则隐藏行,excel,vba,Excel,Vba,我想设置一个电子表格,当您单击一个按钮时,它会查看每行第4列、第7列和第8列中的单元格,如果这三个单元格的条件正确,整行将高亮显示。如果条件不正确,我想隐藏不正确的行 我似乎被困在代码选择要高亮显示的行的地方。我曾尝试使用ActiveCell.EntireRow.Interior.Color,但它只能高亮显示范围内的所有内容,或者在单击按钮之前高亮显示所选单元格的行 Private Sub CommandButton1_Click() Dim rng As Range: Set rng = Ap

我想设置一个电子表格,当您单击一个按钮时,它会查看每行第4列、第7列和第8列中的单元格,如果这三个单元格的条件正确,整行将高亮显示。如果条件不正确,我想隐藏不正确的行

我似乎被困在代码选择要高亮显示的行的地方。我曾尝试使用ActiveCell.EntireRow.Interior.Color,但它只能高亮显示范围内的所有内容,或者在单击按钮之前高亮显示所选单元格的行

Private Sub CommandButton1_Click()
Dim rng As Range: Set rng = Application.Range("A5:I54")
Dim cell As Range
Dim row As Range
Dim i As Integer

       For i = 1 To rng.Rows.Count
                If rng.Cells(RowIndex:=i, ColumnIndex:=4).Text = "Yes" And rng.Cells(RowIndex:=i, ColumnIndex:=7).Text = "Yes" And rng.Cells(RowIndex:=i, ColumnIndex:=8).Text = "No" Then
                rng.EntireRow.Interior.Color = vbYellow
                ElseIf rng.Interior.ColorIndex = vbWhite Then rng.EntireRow.Hidden = True
                End If
        Next

End Sub

如何让代码识别该行的标准并正确地突出显示该行?

如果我了解您的问题,此代码将执行以下操作:

Private Sub CommandButton1_Click()

For i = 5 To 54
    If Cells(i, 4) = "Yes" And Cells(i, 7) = "Yes" And Cells(i, 8) = "No" Then
        Range(Cells(i, 4), Cells(i, 9)).Interior.Color = vbYellow
    ElseIf Cells(i, 4).Interior.Color = vbWhite Then
        Cells(i, 4).EntireRow.Hidden = True
    End If
Next

End Sub

你可以去掉
ElseIf
你所需要的就是
Else:Cells(i,1)。EntireRow.Hidden=True
非常感谢!这很有效。我无法完全理解为什么您的代码在不声明范围的情况下工作。你能给我解释一下吗?@GMalc你可能是对的,从帖子上看,所有非黄色的行都是白色的。但既然他的密码里有白色的支票,我想最好还是留着它。@Moonshine54;通过使用行和列
4、7、8和9的
5到54
设置范围。他能够使用标准列编号,因为他没有在设定的范围内工作。此外,如果希望向工作表中添加更多行,则需要添加最后一行变量。@Moonshine54您不应该像以前那样声明“cell”和“row”,它们已经是VBA中的对象。在我的代码中,由于我没有指定工作簿和工作表,Excel假定单元格(I,4)为ThisWorkbook.ActiveSheet.Cells(I,4)。您的问题是您正在为标准列编号设置列索引,但您在指定的rng内工作,因此范围的第一列将是1而不是4。