如何自动填充命名单元格?
Posted
技术标签:
【中文标题】如何自动填充命名单元格?【英文标题】:How to autofill with a named cell? 【发布时间】:2020-06-23 09:16:17 【问题描述】:我正在尝试在命名单元格上使用自动填充。
在我的代码的真正简化版本中,我将Lastrow
设置为工作表的最后一行。
Lastrow = wsDest.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Offset(RowOffset:=1).Row
lr = Cells(Rows.Count, 1).End(xlUp).Row
Set DragDownCell1 = wsDest.Cells(Lastrow, "B")
DragDownCell1 = 2.24334E+18
然后一个 For 循环将信息填充到 Lastrow
。在循环结束时,我将 1 添加到 Lastrow
,因此将信息添加到最后一行并且不会覆盖自身。
For x = i + 1
Lastrow = Lastrow + 1
Next x
然后我尝试将 2.24334E+18 自动填充到最后一行,但出现方法范围错误。
ws.Dest.Range("DragDownCell1").AutoFill Destination:=wsDest.Range(DragDownCell1, Cells(Lastrow, "B")), Type:=xFillDefault
我在另一个工作表中对此进行了测试,我只是使用命名单元格进行测试
Cell1 = Range("H14")
Range("Cell1").AutoFill Destination:=Range(Cells(14, 8), Cells(24, 8)), Type:=xlFillDefault
我得到一个对象全局错误的方法范围。
【问题讨论】:
Range(DragDownCell1
与 Range("DragDownCell1")
不同。
【参考方案1】:
试试这个:
DragDownCell1.AutoFill Destination:=wsDest.Range(DragDownCell1, wsDest.Cells(Lastrow, "B")), Type:=xFillDefault
由于DragDownCell1
已经是归属于wsDest
工作表的范围,因此您无需指定wsDest.Range(DragDownCell1)
- 最重要的是您最初拥有的
ws.Dest.Range("DragDownCell1")
其中ws.Dest
与wsDest
不同,Range("DragDownCell1")
将是Named Range
,即工作表上命名的范围 - 您实际上只是使用Range
变量。
【讨论】:
我得到一个编译错误,找不到 DragDownCell1 的方法或数据成员 @jamheadart:您还需要在Cells(LastRow, "B")
之前指定工作表
@FunThomas 你说得对,错过了,我已经编辑了答案,现在在我书中的任何一张纸上都进行了很好的测试。
我很困惑,对不起。我已将ws.Dest
更改为wsDest
,如果我将wsDest
从自动填充范围和目标中删除,我会得到一个全局错误,如果我只将它从要自动填充的范围中删除并有DragDownCell1.AutoFill
我得到一个范围对象工作表错误。如果我同时删除wsDest
,我会得到一个编译错误,找不到DragDownCell1
的方法或数据成员
哦,好吧,它现在可以工作了,一旦我在Cells(LastRow, "B")
@FunThomas 之前指定了工作表,谢谢大家:)以上是关于如何自动填充命名单元格?的主要内容,如果未能解决你的问题,请参考以下文章