代码之家  ›  专栏  ›  技术社区  ›  Patrick Bender

带区域(单元格())的Excel VBA自动填充不工作

  •  0
  • Patrick Bender  · 技术社区  · 6 年前

    我正在尝试让这段代码工作,但是我可以在运行这一行时消除1004运行时错误:

    range(“f14:f53”)。自动填充目标:=range(单元格(14,6),单元格(53,colchosenmonth))。选择,键入:=xlfillValues。

    代码的目的是检查将范围(“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 回复  |  直到 6 年前
        1
  •  1
  •   Vityata    6 年前

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

    How to avoid using Select in Excel VBA 有一些好主意如何避免 .Select .Activate . 将工作代码提交给 https://codereview.stackexchange.com 你可能会得到一些有价值的想法。

    推荐文章