Макрос для вставки строк и заполнения не удается - PullRequest
0 голосов
/ 08 ноября 2018

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

Я не знаю, почему это происходит с ошибкой в ​​ActiveSheet.Rows (r). Вставить с ошибкой во время выполнения 1004. Ошибка вставки класса Range.

Не могли бы вы мне помочь?

Sub SetKPIDuration()

Dim Duration As Integer, i As Integer, r As Integer

Duration = InputBox("Enter number of week for KPI to run (min 18)", 
"Duration of KPI", 18)

Select Case True
    Case Duration < 10
        Duration = 18
        GoTo IncreaseKPI
    Case Duration < Application.WorksheetFunction.Max(Range("A7:A150"))
        GoTo ReduceKPI
    Case Else
        GoTo IncreaseKPI
End Select

ReduceKPI:

Rows((Duration + 7) & ":150").Clear
Exit Sub

IncreaseKPI:
Application.ScreenUpdating = False
i = Application.WorksheetFunction.Max(Range("A7:A150"))
r = i + 7

While i < Duration

    ActiveSheet.Rows(r).insert

Wend

Range("A" & (r - 1) & ":" & "M" & (r + i)).filldown


Application.CutCopyMode = False


ScreenUpdating = True

End Sub

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Похоже, что ваша строка ниже не может вернуть желаемый результат:

i = Application.WorksheetFunction.Max(Range("A7:A150"))

если i меньше 18, вы получите бесконечный цикл здесь:

While i < Duration

    ActiveSheet.Rows(r).insert

Wend

... что в итоге приводит к вашей ошибке 1004

0 голосов
/ 08 ноября 2018

Попробуйте полностью указать диапазоны с полными путями workbooks.worksheets.range.

...