我如何使用.EntireRow但跳过A列?

时间:2016-02-26 16:31:48

标签: excel vba excel-vba

寻找解决方法或关于如何使用下面的代码摘录的一些想法,但跳过A列。

基本上,我正在使用

.EntireRow(a.Row).Interior.Color = color

根据用户表单选择突出显示行,但我需要跳过列A,因为它具有自己突出显示的标题。

有什么想法吗?

If ToggleButton3.Value = True Then
    On Error Resume Next
    For iRow = 1 To 15
    If Sheets("Prop" & iRow).Visible <> xlSheetVisible Then
    Else
        With Sheets("Prop" & iRow).Range("$E$1:$E$157")
            Set a = .Find(SlctdPAX, LookIn:=xlValues, LookAt:=xlWhole)
            .EntireRow(a.Row).Interior.Color = RGB(255, 255, 102) 'yellow
        End With
    End If
    Next iRow
ElseIf ToggleButton1.Value = True Then
    On Error Resume Next
    For iRow = 1 To 15
    If Sheets("Prop" & iRow).Visible <> xlSheetVisible Then
    Else
        With Sheets("Prop" & iRow).Range("$E$1:$E$157")
            Set a = .Find(SlctdPAX, LookIn:=xlValues, LookAt:=xlWhole)
            .EntireRow(a.Row).Interior.Color = RGB(255, 0, 0) 'red
        End With
    End If
    Next iRow
ElseIf ToggleButton4.Value = True Then
    On Error Resume Next
    For iRow = 1 To 15
    If Sheets("Prop" & iRow).Visible <> xlSheetVisible Then
    Else
        With Sheets("Prop" & iRow).Range("$E$1:$E$157")
            Set a = .Find(SlctdPAX, LookIn:=xlValues, LookAt:=xlWhole)
            .EntireRow(a.Row).Interior.Color = xlNone 'no fill
        End With
    End If
    Next iRow
ElseIf ToggleButton2.Value = True Then
    On Error Resume Next
    For iRow = 1 To 15
    If Sheets("Prop" & iRow).Visible <> xlSheetVisible Then
    Else
        With Sheets("Prop" & iRow).Range("$E$1:$E$157")
            Set a = .Find(SlctdPAX, LookIn:=xlValues, LookAt:=xlWhole)
            .EntireRow(a.Row).Interior.Color = RGB(128, 255, 0) 'green
        End With
    End If
    Next iRow
Else
End If

2 个答案:

答案 0 :(得分:3)

让我们说a是一个单元格。

关于排除突出显示列A,

  • 突出显示a的整行,执行:

    a.EntireRow.Resize(, Columns.Count - 1).Offset(, 1).Interior.Color

  • 突出显示a下方放在一起的多个行,例如5行,执行:

    a.EntireRow.Resize(5, Columns.Count - 1).Offset(, 1).Interior.Color

  • 突出显示未捆绑在一起的多行,例如整行[E1],[E3],[E5],做:

    Intersect(Union([E1], [E3], [E5]).EntireRow, Cells.Resize(, Columns.Count - 1).Offset(, 1))

仅供参考,我们测试过Union([E1], [E3], [E5]).EntireRow.Resize()是不允许的。

希望这有帮助。

答案 1 :(得分:2)

        With ThisWorkbook.Sheets("Prop" & iRow)
            Set a = .Range("$E$1:$E$157").Find(SlctdPAX, LookIn:=xlValues, LookAt:=xlWhole)
            a.EntireRow.Resize(1, .Cells(a.row, .Columns.Count - 1).column).Offset(, 1).Interior.Color = RGB(255, 0, 0) 'red
        End With

这是KS Sheon已经发布的相当多的问题。

但我担心他的代码在With Sheets("Prop" & iRow).Range("$E$1:$E$157")块内,会将所有行的颜色从1到157。

此外Columns.Count会计算活动工作表的列数,这可能不是想要的