Самый быстрый способ выделить строку / столбец, соответствующий выбранной ячейке - PullRequest
0 голосов
/ 14 октября 2019

Я работаю над большим листом Excel (482 строки x 654 столбца) с вычисленными нагрузками по формулам, и мне нужно найти наиболее эффективный способ выделить строку / столбец, соответствующий выбранной строке.

Я пробовал 2 способа:

  1. Условное форматирование по формуле:
=OR(CELL(“col”)=COLUMN(),CELL(“row”)=ROW())

и

Worksheet_SelectionChange(ByVal target As Range)
target.Calculate
Макрос, который удаляет предыдущее форматирование и добавляет новое форматирование, ссылающееся на выбранную ячейку.

Оба решения срабатывают при изменении выделения и замедляют использование листа по выделению. Я даже пытался установить задержку в 1 или 2 секунды, чтобы запускать только последнее действие, выполненное пользователем, отменяя событие для действия 1, если действие 2 происходит в этот период времени.

Кто-нибудьесть ли у меня какие-либо дополнительные знания в этом случае, например, другой триггер или скрытый параметр в Excel, который бы выделил текущую строку / столбец более четко, чем в Excel, по умолчанию?

1 Ответ

1 голос
/ 14 октября 2019

Как то так?

Public lngRow As Long
Public lngCol As Long

Private Sub Worksheet_SelectionChange(ByVal Target As Range)


    Cells.Interior.Color = XlColorIndex.xlColorIndexNone

    If lngCol = 0 Or lngRow = 0 Then
        lngCol = Target.Column
        lngRow = Target.Row
        FormatRow
        FormatCol
    Else
        If lngCol <> Target.Column Then
            lngCol = Target.Column
            FormatCol
        End If
        If lngRow <> Target.Row Then
            lngRow = Target.Row
            FormatRow
        End If
    End If
End Sub

Function FormatRow()
    Dim r As Excel.Range
    Set r = Rows(lngRow)
    r.Interior.Color = RGB(230, 230, 230)
End Function
Function FormatCol()
    Dim r As Excel.Range
    Set r = Columns(lngCol)
    r.Interior.Color = RGB(230, 230, 230)
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...