如何自动填充命名单元格?

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(DragDownCell1Range("DragDownCell1") 不同。 【参考方案1】:

试试这个:

DragDownCell1.AutoFill Destination:=wsDest.Range(DragDownCell1, wsDest.Cells(Lastrow, "B")), Type:=xFillDefault

由于DragDownCell1 已经是归属于wsDest 工作表的范围,因此您无需指定wsDest.Range(DragDownCell1) - 最重要的是您最初拥有的

ws.Dest.Range("DragDownCell1")

其中ws.DestwsDest 不同,Range("DragDownCell1") 将是Named Range,即工作表上命名的范围 - 您实际上只是使用Range 变量。

【讨论】:

我得到一个编译错误,找不到 DragDownCell1 的方法或数据成员 @jamheadart:您还需要在Cells(LastRow, "B")之前指定工作表 @FunThomas 你说得对,错过了,我已经编辑了答案,现在在我书中的任何一张纸上都进行了很好的测试。 我很困惑,对不起。我已将ws.Dest 更改为wsDest,如果我将wsDest 从自动填充范围和目标中删除,我会得到一个全局错误,如果我只将它从要自动填充的范围中删除并有DragDownCell1.AutoFill 我得到一个范围对象工作表错误。如果我同时删除wsDest,我会得到一个编译错误,找不到DragDownCell1的方法或数据成员 哦,好吧,它现在可以工作了,一旦我在Cells(LastRow, "B")@FunThomas 之前指定了工作表,谢谢大家:)

以上是关于如何自动填充命名单元格?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据变量值“n”自动填充单元格

如何仅自动填充可见单元格?

EXCEL单元格批量填充后如何自动批量添加时间批注?

如何根据多个单元格中的值自动填充

一个单元格更新后自动用数据填充一列

如何根据下一列和单元格(数字-1)自动填充数字?