Excel VBA自动填充与Range(cells())不起作用

时间:2018-07-12 14:54:09

标签: vba excel-vba autofill

我正在尝试使此代码正常工作,但运行此行时似乎无法摆脱1004运行时错误:

Range(“ F14:F53”)。自动填充目标:= Range(Cells(14,6),Cells(53,colChosenMonth))。选择,键入:= xlFillValues。

该代码的目的是检查将Range(“ F14:F53”)中的公式扩展到哪一列,变量colChosenMonth会执行此操作,并且它返回正确的列号(10)。但我似乎无法将其与“自动填充”公式一起使用。如果我尝试选择范围,则可以正常工作。

我已经在下面发布了完整的代码,希望有人可以帮助我发现错误,它在代码中已经很远了。

 Sub PopulateBudget()
    ' Läs in värden från QV till PB
    '
    Dim colChosenMonth As Long
    '
    Sheets("Periodiserad budget").Select
    Selection.Worksheet.Unprotect

    Range("E14").Select
    ActiveCell.FormulaR1C1 = "=SUMIFS(QV!C8,QV!C9,RC1,QV!C7,""<=""&R10C)"

    Range("E14").Select
    Selection.AutoFill Destination:=Range("E14:E53"), Type:=xlFillValues
    Range("E14:E53").Select

    Range("E34").Select
    Selection.ClearContents

    Range("F14").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMIFS(QV!C8,QV!C9,RC1,QV!C7,""<=""&R10C)-SUM(RC5:RC[-1])"

    Range("F14").Select
    Selection.AutoFill Destination:=Range("F14:F53"), Type:=xlFillValues
    Range("F14:F53").Select

    Range("F34").Select
    Selection.ClearContents

    colChosenMonth = Application.Match(Range("vald_månad"), Worksheets("Periodiserad budget").Range("A10:BJ10"), 0)
    Range(Cells(14, 5), Cells(53, colChosenMonth)).Select

    'ROW BELOW DOESNT WORK --> Run-time error '1004': autofill method of range class failed.

    Range("F14:F53").AutoFill Destination:=Range(Cells(14, 6), Cells(53, colChosenMonth)).Select, Type:=xlFillValues

    'Selection.AutoFill Destination:=Range("F14:BJ53"), Type:=xlFillValues
    'Range("F14:BJ53").Select

    Range(Cells(14, 5), Cells(53, colChosenMonth)).Copy
    Range(Cells(14, 5), Cells(53, colChosenMonth)).Select
    'Range("E14:BJ53").Copy
    'Range("E14:BJ53").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False

    Selection.Replace What:="0", Replacement:="", LookAt:=xlWhole, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

Selection.Worksheet.Protect
End Sub

1 个答案:

答案 0 :(得分:1)

删除。Range("F14:F53").AutoFill Destination:=Range(Cells(14, 6), Cells(53, colChosenMonth)).Select, Type:=xlFillValues.行中的.Select

阅读How to avoid using Select in Excel VBA,有一些不错的主意,如何避免使用.Select.Activate。将您的工作代码提交到https://codereview.stackexchange.com可能是一个好主意,您可能会得到一些有价值的主意。