代码之家  ›  专栏  ›  技术社区  ›  Philip Day

用于插入行和填充的宏失败

  •  1
  • Philip Day  · 技术社区  · 6 年前

    我不知道为什么在ActiveSheet.Rows(r).Insert出现错误时失败1004.Range类的Insert方法失败。

    你能帮我吗?

    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 回复  |  直到 6 年前
        1
  •  1
  •   Curtis000    6 年前

    尝试使用完整工作簿.工作表.范围路径完全限定您的范围。

        2
  •  1
  •   Justin    6 年前

    下面的行可能没有返回所需的结果:

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

    i 小于18,这里会有一个无限循环:

    While i < Duration
    
        ActiveSheet.Rows(r).insert
    
    Wend
    

    …最终导致你的1004错误