Редактировать: Я на самом деле пытаюсь создать свой собственный выделенный фрагмент, то есть, когда я нажимаю на ячейку, соответствующий столбец и строка будут выделены. типичный метод для этого - условное форматирование
Нет, это не так :) Вот кое-что из надстройки, которую я создаю для Excel.
Чтобы добиться того, что вы хотите, мы будем использовать очень простую технику. Но сначала вам нужно понять логи c, стоящие за этим кодом.
Откройте MS Excel, затем выберите Column
, затем нажмите клавишу CTRL , а затем выберите Row
, чтобы выбрать диапазон ( mimi c выделение *) 1016 * г). Это будет выглядеть примерно так:
То же самое можно сделать, используя Range("B:B,4:4").Select
Как только это будет сделано, если мы может каким-то образом получить Selection
в соответствующую ячейку, оставив маркеры включенными, тогда наша работа будет выполнена.
Logi c:
- Получить имя столбца из выбора
- Получить строку из выбора
- Создать новый адрес выбора, например
B:B,4:4
- Выбрать новый диапазон
- Активируйте (а не выбирайте) исходное выделение
- Используйте код при каждом нажатии на ячейку, чтобы мы использовали
Worksheet_SelectionChange
- Важное примечание: Поскольку мы используем
Worksheet_SelectionChange
, нам придется выключить Events
, иначе Activate
(пункт 5 выше) снова выстрелит Worksheet_SelectionChange
Код:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim aCell As Range
Dim colName As String
Dim RowName As String
Dim adr As String
On Error GoTo Whoa
Application.EnableEvents = False
Set aCell = Selection
colName = Split(Cells(, aCell.Column).Address, "$")(1) & _
":" & _
Split(Cells(, aCell.Column).Address, "$")(1)
RowName = aCell.Row & ":" & aCell.Row
'~~> Creating a range in this format B:B,4:4
adr = RowName & "," & colName
Range(adr).Select
aCell.Activate
Whoa:
Application.EnableEvents = True
End Sub
В действии:
Важное примечание :
Когда вы хотите работать с несколькими ячейками или другими вещи затем выключите подсветку либо с помощью кнопки, либо просто закомментировав код. Лучше всего создать небольшую надстройку для включения или выключения подсветки