Почему этот макрос Excel работает на компьютере, а не на другом? - PullRequest
0 голосов
/ 27 ноября 2018

Я знаю, что мой код похож на Франкенштейна, чтобы разбираться в Интернете, но он работает на моем компьютере.Тем не менее, когда я пытаюсь запустить его на другом компьютере (который имеет ту же версию Excel 2016), он выдает мне

ошибка времени выполнения '9': подписка выходит за пределы диапазона

Почему?

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

Sub CombineAll()

    'Stop, delete sheet and activate Alerts
    Application.DisplayAlerts = False
    Sheets("Programmation générale").Delete
    Application.DisplayAlerts = True

    'Insert a new worksheet. Assign it to a name. Place it before Index
    Set NewWs = Worksheets.Add(Before:=Worksheets("Index"))
    NewWs.Name = "Programmation générale"

    'Loop to copy worksheets
    NextRow = 1
    For Each ws In ThisWorkbook.Worksheets
        If Not NewWs.Name = ws.Name Then
            If Not Sheet1.Name = ws.Name Then
                finalRow = ws.Cells(Rows.Count, 1).End(xlUp).Row - 1
                ws.Cells(2, 1).Resize(finalRow, 14).Copy NewWs.Cells(NextRow, 1)
                NextRow = NextRow + finalRow
            End If
        End If
    Next ws

    'Copy header
    Sheet3.Range("A1:N1").Copy
    NewWs.Range("A1").Rows("1:1").Insert Shift:=xlDown


    'Select the new worksheet and transform into table
    NewWs.Select
    Dim src As Range
    Set src = Range("B5").CurrentRegion
    Set NewWs = ActiveSheet
    NewWs.ListObjects.Add(SourceType:=xlSrcRange, Source:=src, _
    xlListObjectHasHeaders:=xlYes, tablestyleName:="TableStyleMedium15").Name = "ProgrammationGenerale"

    'Arrange the table to specifications
    Range("ProgrammationGenerale[#All]").Select
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With

    ActiveSheet.Columns("A:N").AutoFit

    Dim finalRowTable As Integer
    Dim i As Integer
    finalRowTable = Cells(Rows.Count, 1).End(xlUp).Row
    Range("A1:A" & finalRow).EntireRow.AutoFit
    For i = 2 To finalRow
        If Range("A" & i).EntireRow.RowHeight < 27 Then
            Range("A" & i).EntireRow.RowHeight = 27
        End If
    Next if

    ActiveSheet.Range("D:F").EntireColumn.Hidden = True
    ActiveSheet.Range("H:J").EntireColumn.Hidden = True

    With ThisWorkbook.Worksheets("Programmation générale").ListObjects("ProgrammationGenerale").Sort
        .SortFields.Clear
        .SortFields.Add _
            Key:=.Parent.ListColumns("Début_Date").DataBodyRange, SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortNormal
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With


    'Arrange for printing
    ActiveSheet.PageSetup.Orientation = xlLandscape
    ActiveSheet.PageSetup.PaperSize = xlPaperLegal

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