excel中的宏错误“范围类的自动填充方法失败”

时间:2016-02-09 03:52:10

标签: excel vba excel-vba

我正在尝试在宏中运行以下脚本,它一直给我这个错误“范围类的自动填充方法失败”。有什么建议吗?

Dim WS_Count As Integer
Dim I As Integer

WS_Count = ActiveWorkbook.Worksheets.Count
For I = 9 To WS_Count
Sheets(I).Select
Selection.AutoFill Destination:=Range("C19:C114"), Type:=xlFillDefault
Range("C19:C114").Select
Next I

2 个答案:

答案 0 :(得分:1)

请确保您的工作表名称与Sheet(I)完全一致。它显示我是一个公正的数字。那么您的工作表名称是数字吗?

Dim WS_Count As Integer
Dim I As Integer

  WS_Count = ActiveWorkbook.Worksheets.Count
  For I = 9 To WS_Count
    Sheets(I).Select
     Range("C19:C20").Select
      Selection.AutoFill Destination:=Range("C19:C114"), Type:=xlFillDefault
    Range("C19:C114").Select
 Next I

答案 1 :(得分:1)

你可以试试这个不需要选择任何东西。它还消除了屏幕闪烁并且速度更快。

Sub AutoFillC()
Dim WS_Count As Integer
Dim I As Integer


    Application.ScreenUpdating = False
    WS_Count = ActiveWorkbook.Worksheets.Count
    For I = 9 To WS_Count
        Sheets(I).Range("C19:C20").AutoFill _
            Destination:=Range("C19:C114"), Type:=xlFillDefault
'        Range("C19:C114").Select **There is rarely need to _
            use the .Select method!
    Next I
    Application.ScreenUpdating = True
End Sub

@ harun24hr很少需要在工作表上选择任何范围。对于像OP这样的简单命令,请指定要应用于它的范围和方法。如果要对Range执行多个方法,请使用这样的结构。注意句号“。”在每个方法之前

With Range '.Method '.Method1 End With

选择范围会降低代码速度,尤其是在未禁用ScreenUpdating的情况下。