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

Excel синхронизированная прокрутка работает хорошо, когда у вас есть 2 листа. У меня лист1 всегда вверху, а листы 1-5 внизу. Когда я переключаюсь между листами внизу, номера строк не синхронизированы. Кроме того, чем дольше я пытался найти решение, тем больше было числа синсов, даже не помогло положение окна сброса.

  1. Проблема: допустим, я в строке 100 sheet1, в строке 100 sheet2, затем я переключаюсь на лист 3, который начинается с номера 1, а sheet1 - с номера 100. И чем больше я переключаюсь, тем больше путаюсь.

  2. Проблема: почему прокрутка начинает отставать через некоторое время? Например: Sheet1 под номером 1, Sheet2 под номером 1. Когда я начинаю прокручивать лист1, он достигает номера 60, и только тогда лист2 начинает прокручивать номер 1, но тогда у вас разница в 60 номеров?

Любая помощь приветствуется.

2 ответа2

1

Во-первых, Excel работает правильно. Вы ожидаете, что это сделает что-то, что он не может сделать.

Синхронная прокрутка предназначена для работы только с двумя листами одновременно. Это предел программы. Каждый раз, когда вы переключаете листы, он начинается там, где этот лист был, когда он не был активным. Поэтому, чем больше вы переключаетесь, тем больше « несинхронизировано » листов.

Единственный обходной путь, который я нашел, - это макрос VBA, который вы можете попробовать, если хотите. Синхронная прокрутка с более чем двумя Windows использует следующий VBA для прокрутки более двух листов одновременно.

Примечание. Используйте на свой страх и риск. Сделайте резервную копию вашей работы в первую очередь.

Sub SynchSheets()
    ' Duplicates the active sheet's cell position in each sheet

    If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub

    Dim shUser As Worksheet
    Dim sht As Worksheet
    Dim lTopRow As Long
    Dim lLeftCol As Long
    Dim sAddr As String

    Application.ScreenUpdating = False

    ' Note the current sheet
    Set shUser = ActiveSheet

    ' take information from current sheet
    With ActiveWindow
        lTopRow = .ScrollRow
        lLeftCol = .ScrollColumn
        sAddr = .RangeSelection.Address
    End With

    ' loop through worksheets
    For Each sht In ActiveWorkbook.Worksheets
        If sht.Visible Then 'skip hidden sheets
            sht.Activate
            Range(sAddr).Select
            ActiveWindow.ScrollRow = lTopRow
            ActiveWindow.ScrollColumn = lLeftCol
        End If
    Next sht

    shUser.Activate
    Application.ScreenUpdating = True
End Sub
0

Существует дополнение под названием KuTools, которое позволяет вам сделать это. Просто перейдите на новую вкладку Enterprise и нажмите на листы / синхронизировать листы.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .