1

Нужна помощь со следующим кодом.

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

Я взял следующее из support.microsoft и вставил свой код:

  Sub WorksheetLoop2()

     ' Declare Current as a worksheet object variable.
     Dim Current As Worksheet

     ' Loop through all of the worksheets in the active workbook.
     For Each Current In Worksheets

        ' Insert your code here.
        Sheets.select
         ActiveWindow.NewWindow
         Windows.Arrange ArrangeStyle:=xlTiled
        ' This line displays the worksheet name in a message box.
        MsgBox Current.Name
     Next

  End Sub

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

Кроме того, я хотел бы, чтобы новые окна начинались со второго листа, потому что я получаю дополнительное окно в конце цикла.

Я не могу использовать имена листов, потому что имена листов меняются часто.

Ваша помощь очень ценится.

1 ответ1

0
Here's one way to iterate through the windows of the active workbook, set each to a particular sheet, and put a specific cell in the top left corner. 

Sub Arrange_windows()

'declarations
Dim a As Integer

    'loop through all windows of the active workbook
    'count backward so we end up with the windows arranged from
    '1ow to high after we arrange them at the end
    '"arrange" sequences windows from most recently active to least recently active
        For a = ActiveWorkbook.Windows.Count To 1 Step -1
        'For a = 1 To ActiveWorkbook.Windows.Count
            'activate window a
                ActiveWorkbook.Windows(ActiveWorkbook.Name & ":" & a).Activate
            'activate sheet a in the active window
                ActiveWorkbook.Sheets(a).Select

            'add logic here to decide what to do in the active window
            'one possibility is a "Select Case" statement:
            Select Case ActiveWindow.Index
                Case 1:
                    ActiveWorkbook.Sheets("Sheet1").Select
                    Application.Goto Reference:=Range("$A$1"), Scroll:=True
                Case 2:
                    ActiveWorkbook.Sheets("Sheet2").Select
                    Application.Goto Reference:=Range("$D$15"), Scroll:=True
                Case Else:
                    'do nothing
            End Select
        Next a

'arrange the windows sequentially from most
'recently active to least recently active
    ActiveWorkbook.Windows.Arrange (xlArrangeStyleTiled)

End Sub

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