Событие SelectionChange рабочего листа Excel VBA из модуля - PullRequest
1 голос
/ 31 марта 2020

Я ищу потенциальную возможность использовать рабочую таблицу SelectionChange на нескольких листах.

Вот небольшой фрагмент кода, который мне нужно запустить, используя событие:

Private Sub Worksheet_SelectionChange(ByVal cell_sel As Range)

Cells.Interior.ColorIndex = xlColorIndexNone
cell_sel.Interior.ColorIndex = xlColorIndexNone
cell_sel.Offset(1, 0).Interior.ColorIndex = 40
cell_sel.Offset(-1, 0).Interior.ColorIndex = 40
cell_sel.Offset(0, 1).Interior.ColorIndex = 40
cell_sel.Offset(0, -1).Interior.ColorIndex = 40

Это прекрасно работает до тех пор, пока он помещается в лист (очевидно). Это просто. К сожалению, я хотел бы иметь возможность использовать этот код или любой другой на ЛЮБОМ листе, если указано / 1021 * «макро-переключение» переключено / запущено.

Я думая о возможных решениях, но, к сожалению, я не могу найти надежную ссылку. Все, что есть, это статья за статьей, в которой говорится, что это невозможно, но я думал о возможном решении:

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

К сожалению, мои знания VBA не идеальны, и идея кажется не только неразумной, но и невозможной сделать для меня.

Есть ли кто-нибудь, кто пробовал что-то подобное? Это вообще возможно с VBA и Excel? Если нет, есть ли кто-нибудь, кто действительно достиг того, что я пытаюсь сделать, или что-то подобное?

Заранее спасибо за вашу помощь! Я очень ценю ваше время, потраченное на ответы и помощь в моих вопросах: -)

1 Ответ

1 голос
/ 31 марта 2020

Просто чтобы начать. Это может не полностью ответить на этот вопрос.

Вы можете запустить макрос переключения с помощью кнопки и сделать тестовый макрос активным или неактивным в Модуле

Public cell_sel_Chng As Range
Public run_Test As Boolean

Sub Set_test_Toggle()
Dim ws As Worksheet
If run_Test = False Then
    run_Test = True
    Else
    run_Test = False
        For Each ws In ThisWorkbook.Worksheets
        ws.Cells.Interior.ColorIndex = xlColorIndexNone
        Next
End If
End Sub


Sub test()

'Cells.Interior.ColorIndex = xlColorIndexNone
cell_sel_Chng.Interior.ColorIndex = xlColorIndexNone
cell_sel_Chng.Offset(1, 0).Interior.ColorIndex = 40
cell_sel_Chng.Offset(-1, 0).Interior.ColorIndex = 40
cell_sel_Chng.Offset(0, 1).Interior.ColorIndex = 40
cell_sel_Chng.Offset(0, -1).Interior.ColorIndex = 40

End Sub

в Рабочей книге

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Set cell_sel_Chng = Target
If run_Test = True Then test

End Sub

Здесь - пример кнопки переключения для активации / остановки другого макроса. Кнопки «Воспроизведение / Пауза» и «Курсор CrossHair» являются переключателями макрос-кнопок

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...