我编写了一个宏,我需要在多个列中使用公式自动填充某些行。
列数是固定的,但每次运行宏时,行数都是可变的。我使用"记录宏"函数和当前宏只将我的行填充到第16行。下面是代码:
Range("D3:P3").Select
Selection.AutoFill Destination:=Range("D3:P16")
我显然需要更改" P16"动态的东西。
我试过使用以下内容:
Dim LR As Long
LR = Range("D3:P3" & Rows.Count).End(xlUp).Row
Range("B3:P3").AutoFill Destination:=Range("B3:P" & LR)
我不确定" Dim LR是否为Long"必须放在我的宏的最开始 - 或者它可以放在任何地方吗? 无论如何,我得到了一个错误,我上面试图给出一个"自动填充选择错误" (抱歉,我无法记住确切的错误信息。
有人能指出我正确的方向吗?
答案 0 :(得分:1)
LR可以在您第一次使用之前的任何地方声明,但最好在开始时进行。您的LR范围不正确。
LR = Range("D3:P3" & Rows.Count).End(xlUp).Row
应该是
LR = Range("D3:P3").End(xlUp).Row
如果你想找到一个低于D3的范围的结尾你应该使用xlDown:P3
LR = Range("D3:P3").End(xlDown).Row
会在D3:P3
下面的所有列D:P中为您提供最后一行数据答案 1 :(得分:1)
我认为你正在寻找这个:
LR = Range("D3:P" & Rows.Count).End(xlUp).Row
但请注意,这会在D列中找到包含任何内容的最后一行 - 如果以后的行中包含Cols EP中的内容但不在Col D中,那么将忽略这些行。
答案 2 :(得分:0)
所以我使用了提供给我的信息并设法获得以下内容:
Dim LR As Long
LR = Range("C3:P" & Rows.Count).End(xlDown).Row
Range("D3:P3").AutoFill Destination:=Range("D3:P" & LR)
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$D$2:P" & LR), , xlYes).Name = _
"Table10"
这允许我计算已经在#34; C"列中填充的行数,然后采用已存在于单元格D3:P3中的公式,并在范围内自动填充它们,直到列C的最后一行填充。
然后我使用该结构使整个范围成为一个表,在本例中命名为" Table10"。
很棒的东西 - 你的帮助让我得到了我想要的东西。感谢