【问题标题】:Excel VBA: changing hard coded column to dynamic range to autofill to last rowExcel VBA:将硬编码列更改为动态范围以自动填充到最后一行
【发布时间】:2014-03-26 17:55:33
【问题描述】:

来自没有经验的 vba 用户您好。我在尝试对列使用命名范围时遇到自动填充到最后一行的代码问题。当我对列使用硬编码时,一切似乎都工作正常,在本例中为列 CW,我需要用命名范围替换此列 CW,以便在工作表中添加或删除列时宏仍然可以工作.

我使用了以下命名范围:

  • First_Date:这是其中一列的标题单元格(在本例中为 AP5)
  • Second_Row:这是我要从 (AP7:CW7) 复制公式的列范围
  • Second_Cell:我要开始自动填充的单元格 (AP7)
  • Last_Column:这是我想在代码中使用的 CW 列。自动填充会一直到此列并一直到最后一行。

在不同的线程中搜索后,我想出了以下似乎可以正常工作的代码。如何将列 CW 更改为命名范围?还是需要改代码?

Dim Lr As Integer
Lr = Range("First_Date").End(xlDown).Row 'Searching last row 
Rows(Lr).Insert Shift:=xlDown 'Inserting new row
Range("Second_Row").AutoFill Destination:=Range(Range("Second_Cell"), Range("CW" & Lr))

有人可以帮我吗?

【问题讨论】:

    标签: excel vba dynamic range autofill


    【解决方案1】:

    这将完成工作:-)

    子 RangerFiller()

    '保存公式B1

    的单元格

    OriginalFormula = Cells(1, 2).Formula

    '将公式复制到B旁边的最后一列,但可以使用另一列作为 '一个计数列....保存最后一个值的列

    Range("B2:B" & Cells(Rows.Count, "A").End(xlUp).Row).Formula = OriginalFormula

    结束子

    【讨论】:

    • 非常感谢,但我一直在寻找一种解决方案来避免使用硬编码,例如将 B1 指定为包含公式的单元格,因为这可能会有所不同。这就是为什么我需要找到使用命名范围的解决方案,并且有人给了我解决方案,将 Range("CW" & Lr) 更改为 Cells(Lr, Range("Last_Column").Column)
    【解决方案2】:

    有人给了我解决方案:

    改变

    Range("CW" & Lr) 
    

    Cells(Lr, Range("Last_Column").Column)
    

    【讨论】:

      【解决方案3】:

      我遇到了类似的问题,因为我不想对单元格引用进行硬编码。我发现下面这个解决方案很有用,通过使用“& ______ &”替换可以使用输入框或公式计算的单元格编号。

      例如。 cell1 = A 列的最后一行

      Range("CW" & cell1 &" :CW & Lr), 其中 cell1 = 可以通过输入框/公式添加的任何数字。

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 2012-06-01
        • 2015-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多