Как выделить строку при нажатии и применить код ко всем вкладкам в Excel - PullRequest
1 голос
/ 24 мая 2019

Я хочу, чтобы строка была выделена при нажатии, и убрать выделение этой строки при нажатии другой.

Для этого я нашел код здесь , чтобы сделатьэто в определенной вкладке.Я что бы применить это ко всем вкладкам.Поэтому я добавил следующий код в «ThisWorkbook»:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Static xRow
    If xRow <> "" Then
        With Rows(xRow).Interior
            .ColorIndex = xlNone
        End With
    End If
    pRow = Selection.Row
    xRow = pRow
    With Rows(pRow).Interior
        .ColorIndex = 6
        .Pattern = xlSolid
    End With
End Sub

С этим кодом строка подсвечивается при изменении значения этой строки, но не при нажатии.Есть ли способ добиться выделения при нажатии на все вкладки?

1 Ответ

1 голос
/ 24 мая 2019

Это работает для меня.Он использует Worksheet_SelectionChange вместо Worksheet_SheetChange.Подсвечивается только текущая ячейка.Я добавил его в окно кода листа.Когда вы вставляете код непосредственно в окно кода «ThisWorkbook», он работает для всех листов.

Option Explicit

Dim PreviousCell As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Not PreviousCell Is Nothing Then
        Dim xRow As Variant, prow As Variant

        prow = Selection.Row
        xRow = prow

        If Not PreviousCell Is Nothing Then
            With Rows(PreviousCell.Row).Interior
                .ColorIndex = xlNone
                .Pattern = xlNone
            End With
        End If

        With Rows(xRow).Interior
            .ColorIndex = 6
            .Pattern = xlSolid
        End With

    End If

    Set PreviousCell = Target
End Sub

Чтобы вставить код в ThisWorkbook, выберите объект в верхней части окна кода> выберите «Рабочая книга», а затемвыберите процедуру> выберите «SheetSelectionChange».enter image description here Теперь скопируйте / вставьте код между Private ..... End sub

Когда вы нажимаете внутри Sub и оновыглядит так ((Общее)), это не работает:

Это работает: enter image description here

Это не будет работать: enter image description here

Идея пришла из этого ответа: Excel VBA: получить диапазон предыдущей ячейки после вызова LostFocus ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...