Макрос VBA для выбора одной ячейки на всех листах

Я несколько новичок в VBA, и это конкретное действие похоже на то, что это может быть из моей нынешней сферы знаний.

Есть ли способ закодировать VBA, чтобы он активно выбирал одну и ту же ячейку на всех листах по мере выбора текущей ячейки? У меня есть модель, которую я собрал, чтобы моя команда могла вводить данные одновременно в отношении SKU продуктов в столбце A на Sheet1, но из-за большого количества информации, которую мы вводим для каждого элемента, я использовал несколько листов

Например, если у меня есть ячейка H4, выбранная на Sheet1, возможно ли, чтобы все остальные листы активировали ячейку H4 при переключении на другие рабочие листы?

Это то, что я до сих пор нашел в тестовой книге, но, похоже, это не работает:

Private Sub Workbook_SheetActivate(ByVal Sh As Object) Select Case LCase(Sh.Name) Case Is = "sheet1", "sheet2", "sheet3" If CurRow > 0 Then With Application .EnableEvents = False .Goto Sh.Cells(CurRow, CurCol), Scroll:=True Sh.Range(ActCellAddr).Select .EnableEvents = True End With End If End Select End Sub Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Select Case LCase(Sh.Name) Case Is = "sheet1", "sheet2", "sheet3" CurRow = ActiveWindow.ScrollRow CurCol = ActiveWindow.ScrollColumn ActCellAddr = ActiveCell.Address End Select End Sub 

Я нашел этот код ниже:

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

Но это требует, чтобы пользователь фактически ввел ячейку, которую они хотели бы выбрать. Я ищу, чтобы он был автоматическим.

Любые советы или предложения? Любая помощь приветствуется.

Вы можете публиковать следующее на каждом листе в своей книге.

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Set CurrWS = ActiveSheet For Each WS In ThisWorkbook.Worksheets WS.Activate WS.Range(Target.Address).Select Next CurrWS.Activate End Sub 

Каждый раз, когда вы выбираете ячейку, она будет циклически перемещаться по всем листам и выбирать одну и ту же ячейку. Недостаток этого очевиден: если у вас слишком много листов, это будет утомительно. Другая проблема заключается в том, что она будет проходить через все. Таким образом, это может испортить некоторые другие листы, если вы собираетесь использовать это для ввода данных.

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

Не такой элегантный, как хотелось бы, но он работает. Удачи и сообщите нам, если это поможет.

Стоит отметить, что есть обработчик событий на уровне рабочей книги, который обрабатывает одно и то же событие, поэтому вам нужно только один раз добавить код в модуль кода ThisWorkbook:

 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _ ByVal Target As Range) 

Sh представляет собой ActiveSheet.

Вероятно, также стоит отключать события, пока вы выбираете диапазоны на других листах, или это приведет к повторному запуску вашего обработчика событий (не забудьте снова включить обработку событий перед выходом из вашего кода!)

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

 targetcell = ActiveCell.Address OriginSheet = ActiveSheet.Name Dim ws As Worksheet For Each ws In Sheets If ws.Visible = True Then ws.Select (False) Next ws range(targetcell).Select Sheets(OriginSheet).Select 
Давайте будем гением компьютера.