#excel #vba #highlight
#excel #vba #выделение
Вопрос:
Я новичок в программировании в целом, но я начинаю делать свои первые шаги в мире VBA.
Меня попросили создать макрос для выделения выбранной ячейки (также с учетом ссылочного столбца и строки), и мне удалось собрать некоторые фрагменты кода, найденные в Интернете, например:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'for removing any existing color from the entire sheet
Worksheets("Sheet1").Cells.Interior.ColorIndex = xlNone
Dim a As Integer
Dim b As Integer
a = ActiveCell.Row
b = ActiveCell.Column
Worksheets("Sheet1").Rows(a).Interior.ColorIndex = 37
Worksheets("Sheet1").Columns(b).Interior.ColorIndex = 40
Worksheets("Sheet1").Cells(a, b).Select
If (a = 1 And b = a) Then Worksheets("Sheet1").Cells.Interior.ColorIndex = xlNone
End Sub
В любом случае есть некоторые ошибки:
- я бы хотел отменить выделение, снова щелкнув по тем же ячейкам, а не по ячейке A1.
- когда этот макрос включен, трудно выбирать столбцы (нужно дважды щелкнуть по столбцу, когда он всего один, но возникают проблемы, когда мне приходится удалять сводную таблицу и, следовательно, больше столбцов одновременно).
- САМОЕ ГЛАВНОЕ, это конфликтует с другими макросами.
Можете ли вы помочь мне получить чистый макрос, который работал без проблем? Большое спасибо.
Ответ №1:
- Ваш код не сможет отменить выделение, щелкнув в той же ячейке, потому что это не вызовет
SelectionChange
событие. Ваш обходной путь может заключаться в том, чтобы либо запрограммировать другой макрос, привязанный к другому событию, чтобы отключить выделение (например, событие двойного щелчка). Я чувствую, что это вызовет больше проблем, чем того стоит. Вероятно, вам лучше создать макрос, чтобы отключить выделение, и назначить ему сочетание клавиш. - Проблема здесь в том, что ваш текущий код явно указывает приложению выбрать активную ячейку (без необходимости). Таким образом, он отменит выделение всего столбца и вместо этого выделит ячейку. Просто удалите следующую строку из своего кода:
Worksheets("Sheet1").Cells(a, b).Select
- Вам нужно будет поделиться более подробной информацией о типах конфликтов, если вам потребуется более конкретная помощь.