Код VBA работает на 1 компьютере, но дает синтаксическую ошибку на другом компьютере.

Я записал макрос ниже, и он отлично работает на моем компьютере (Excel 2016). Однако, когда я запускаю его на другом компьютере с Excel 2013, он дает мне «Синтаксическую ошибку» и выделяет формулу для вычисления столбца V «Статус». Также кажется, что все пропущено, то есть не добавляются 2 новых столбца и не вычисляется столбец U «Даты». Есть идеи, как это исправить? Я не знаю различий в синтаксисе между двумя версиями Excel. Спасибо!

 Sub ReportingStatus()

    Dim LastRow As Range

    'Add 2 columes and format them
    Range("U6").Select
        ActiveCell.FormulaR1C1 = "Dates"
        Range("V6").Select
        ActiveCell.FormulaR1C1 = "Status"

        Range("T6").Select
        Application.CutCopyMode = False
        Selection.Copy
        Range("U6:V6").Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False

        Range("S65536").End(xlUp).Select
        ActiveCell.Offset(0, 2).Select
        Set LastRow = ActiveCell

    'Calculate the value for column U "Date"
        Application.ScreenUpdating = False
        Range("U7", LastRow).Select

        Selection.FormulaR1C1 = _
            "=IF(RC[-2]=""Awaiting Management Response"",R2C1-RC[-9],IF(RC[-3]<>"""",MAX(RC[-3]-RC[-4],R2C1-RC[-3]),R2C1-RC[-4]))"

        LastRow.Offset(0, 1).Select

    'Calculate the value for column V "Status"
        Range("V7", ActiveCell).Select
        Selection.FormulaR1C1 = _
            "=IF(RC[-3]=""Awaiting Management Response"",IF(RC[-1]<1,""MGMT-CURRENT"",IF(AND(1<=RC[-1],RC[-1]<=60),""MGMT-DELAYED"",IF(AND(61<=RC[-1],RC[-1]<=90),""MGMT-SIGNIFICANTLY DELAYED"",""MGMT-CRITICAL""))),IF(RC[-1]<1,""CURRENT"",IF(AND(1<=RC[-1],RC[-1]<=60),""DELAYED"",IF(AND(61<=RC[-1],RC[-1]<=90),""SIGNIFICANTLY DELAYED"",""CRITICAL""))))"
        Range("V7").Select

        Columns("U:V").EntireColumn.AutoFit
# excel
Источник
  • 0
    вручную введите формулу в Excel 2013, посмотрите, что такое сообщение об ошибке, и исправьте его.
  • 2
    Вам может быть полезно прочитать Как избежать использования Select в Excel VBA .
  • 0
    «Синтаксическая ошибка» возникает до того, как код начинает выполняться, поэтому, естественно, он «все пропускает». Этот конкретный код не может вызвать эту ошибку, потому что он не содержит проблем с синтаксисом.
Codelisting
Codelisting
Популярные категории
На заметку программисту