Временное выделение ячеек, возвращая исходный цвет - PullRequest
0 голосов
/ 20 ноября 2018

Я хочу сделать макрос, который Подсвечивает выделенные строки, но не меняет исходный цвет ячейки после того, как выделение закончено (когда ячейка больше не выбрана). * ( Исходная ячейкаcolor: цвет первоначально указанной ячейки.)

и вот код, который я использовал

Sub Worksheet_SelectionChange(ByVal Target As Excel.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

, но когда я использую код, подобный этому, Highlight активен, но оригинальный цвет ячейки изменился.

Как я могу это исправить?

1 Ответ

0 голосов
/ 20 ноября 2018

Что-то, что может сработать (не проверял), это использовать условное форматирование, чтобы изменить цвет и, следовательно, позволить ему всегда автоматически восстанавливать исходный цвет.Не уверен в том, насколько хорошей будет производительность этого обходного пути.

  1. В модуле добавьте следующую функцию:

    Public Function IsSelected() As Boolean
        IsSelected = Not Intersect(Application.Caller, Range("SelectedRange")) Is Nothing
    End Function
    
  2. В вашемк нужному рабочему листу добавьте следующее событие:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Me.Names.Add "SelectedRange", Target
    End Sub
    
  3. В нужном диапазоне добавьте условное форматирование по формуле:

    =IsSelected()
    
...