Предлагайте используется метод Worksheet_BeforeDoubleClick
, чтобы следить за «выделенной» ячейки путем размещения двойной щелкнула ссылку на ячейку на скрытом листе, затем либо используйте условное форматирование или явные проверки в обработчике событий, чтобы выделить соответствующую ячейку (или «ячейки», если вы разрешаете выделение одной ячейки на нескольких строках) на основе значений (-ов) на скрытом листе. Если вы решите использовать условное форматирование, всякий раз, когда новая ячейка «дважды нажата», ссылка обновляется на скрытом листе, и условное форматирование автоматически пересчитывается. Только одна ячейка в данной строке когда-либо останется «выделенной».
В качестве альтернативы, вы можете сделать это явно регулируя двоеборье нажмите код обработки вдоль линий следующее:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If (Not (IsEmpty(Worksheets("Sheet2").Cells(1, 1).Value))) Then
ActiveSheet.Range(Worksheets("Sheet2").Cells(1, 1).Value).Interior.ColorIndex = 0
End If
Worksheets("Sheet2").Cells(1, 1).Value = Target.Address
ActiveSheet.Range(Worksheets("Sheet2").Cells(1, 1).Value).Interior.ColorIndex = 3
End Sub
Этот способ можно также проверить на любую выделенную ячейку (ы) при загрузке листа и при необходимости сбросить их (при условии, что пользователю разрешено сохранять изменения).
Чтобы выделить только одну ячейку на любой данной строке (но позволяет несколько строк, чтобы иметь одну выделенную ячейку), вы можете использовать следующие (это также переключает выделение в уже выделенную ячейку):
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If (Not (IsEmpty(Worksheets("Sheet2").Cells(Target.Row, 1).Value))) Then
ActiveSheet.Range(Worksheets("Sheet2").Cells(Target.Row, 1).Value).Interior.ColorIndex = 0
If (Worksheets("Sheet2").Cells(Target.Row, 1).Value = Target.Address) Then
Worksheets("Sheet2").Cells(Target.Row, 1).Value = ""
Target.Interior.ColorIndex = 0
Else
Worksheets("Sheet2").Cells(Target.Row, 1).Value = Target.Address
Target.Interior.ColorIndex = 3
End If
Else
Worksheets("Sheet2").Cells(Target.Row, 1).Value = Target.Address
Target.Interior.ColorIndex = 3
End If
Cancel = True
End Sub
Большое спасибо, его работа сейчас :) –
Рад это услышать @Mohammad Mbydeen. Возможно, вы могли бы проголосовать за это как спасибо :) – VirtualMichael