Ищете обходной путь или какую-нибудь идею о том, как использовать приведенный ниже фрагмент кода, но пропустите столбец 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
0
arbitel 26 Фев 2016 в 19:31

2 ответа

Лучший ответ

Допустим, 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))

FYI, только что проверил, что Union([E1], [E3], [E5]).EntireRow.Resize() не разрешено.

Надеюсь это поможет.

3
Community 20 Июн 2020 в 09:12
        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

Что довольно много, о чем уже писал К.С. Шеон.

Но я боюсь, что его код, находящийся внутри блока With Sheets("Prop" & iRow).Range("$E$1:$E$157"), раскрасит все строки с 1 по 157.

Кроме того, Columns.Count подсчитает количество столбцов активного листа, которое может быть не тем, которое нужно

2
user3598756 26 Фев 2016 в 17:24