vbA autofill 时提示“类range的autofill方法无效”
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vbA autofill 时提示“类range的autofill方法无效”相关的知识,希望对你有一定的参考价值。
With zjsheet
Dim a As Long
a = WorksheetFunction.Count(zjsheet.Range("C:C"))
.Columns("A:D").Select
.Columns("A:D").Activate
.Columns("A:D").Insert Shift:=xlToRight
.Range("A1").FormulaR1C1 = "=RC[6]*10000+RC[7]"
.Range("A1").Select
1: zjsheet.Range("A1").AutoFill Destination:=zjsheet.Range("A2:A2000")
2: Selection.AutoFill Destination:=Range("A1:A2000"), Type:=xlFillDefault
:3: Selection.AutoFill Destination:=zjsheet.Range("A1:A"&a), Type:=xlFillDefault
:4: Selection.AutoFill Destination:=Activesheet.Range("A1:A2000"), Type:=xlFillDefault
End With
关键就是上面这个autofill 这地方这几种方法都不行啊/应该怎么改?是什么原因呢?
后面再加表命限定就没意义了。
改成这样就好了。:
With zjsheet
Dim a As Long
a = WorksheetFunction.Count(.Range("C:C"))
.Columns("A:D").Select
.Columns("A:D").Activate
.Columns("A:D").Insert Shift:=xlToRight
.Range("A1").FormulaR1C1 = "=RC[6]*10000+RC[7]"
.Range("A1").AutoFill Destination:=.Range("A1:A2000")
End With追问
改成这样也不行啊。。还是提示实时错误1004,类range的aotufill 方法无效。这里应该怎么整?
追答我这边测试一点问题也没有啊。。
你把异常截个图贴出来
截个全屏图。。我感觉你的代码有问题。
追问能加我吗?4491264---22,太长了,发不上。
追答你加我吧。。。看我的介绍上有
参考技术A .Range("A1").AutoFill .Range("A1:A2000")本回答被提问者采纳 参考技术B 注意:1.若要操作的表格不是活动状态,那么不论是源区域还是目标区域,都要使用完整的引用,如“worksheets("sheet1").range("A1:A20")”,而不是“range("A1:A20")”。
2.经常会出现的错误,应该就是代码没有完全引用,EXCEL在执行代码的时候找不到要填充的区域。所以只要把前后两个区域写成完整的引用就没问题了,不需要激活工作表也可以。
3.什么情况下可以使用不完全引用Range呢?个人认为代码所在的工作表或者当前活动工作表中可以
4.如果代码放在工作表中,就要对其它工作操作的时候就要完全引用,即使是使用Activate方法使用不完全的引用也不能实现Autofill。如果代码放在模块中的话,可以先用Activate方法先激活工作表,然后使用Range()来完成。
5.参数中的 Destination:=,可以省略,直接写成:sourceRange.AutoFill fillRange
Excel 或 VBA 问题? Range.Autofill 方法有时会从我不想要的地方开始
【中文标题】Excel 或 VBA 问题? Range.Autofill 方法有时会从我不想要的地方开始【英文标题】:Excel or VBA Issue? Range.Autofill Method sometimes starts where I don't want it to 【发布时间】:2018-11-30 22:37:21 【问题描述】:我是 VBA 新手,我正在尝试制作一个表单控制按钮,当单击该按钮时,它会自动填充一个非常复杂的公式,直到它到达动态数据透视表的末尾。数据透视表正在从另一个名为“数据导入”的工作表/选项卡中获取数据,其中包括资产及其各自的折旧信息。
因此,当我的“数据导入”选项卡可能有 100 个或更多资产时,这很有效,但当资产少于该值时,它会以某种方式开始应用上面的公式,我希望范围/自动填充开始。详细地说,如果我的数据透视表中有 7 个资产(7 行),并且我希望公式自动填充范围(O15:O400),它会在(O5:O400)
代码:
Sub AutoFill()
Dim k As Long
'To get a number rows taken up by assets
k = Range("A15", Range("A15").End(xlDown)).Rows.Count
'To apply AutoFill at specified range
Range("O15").AutoFill Destination:=Range("O15:O" & k)
End Sub
我使用 A 列是因为它是资产的主键,因此总会有主键。
提前致谢!
【问题讨论】:
见this answer。你应该完全限定你对Range
的调用。
【参考方案1】:
您正在计算从第 15 行开始的范围内的单元格数,但预计该计数是最后一行。
如果 End
命中第 30 行,则 Rows.Count
将是 16,而您填写的将仅填写 O15:O16
。
如果最后一行是 25,那么计数将是 11,要填充的范围是 O11:O15
:
Sub AutoFill()
Dim k As Long
With Worksheet("Sheet1") 'Change to your sheet
'To get a number rows taken up by assets
k = .Range("A15").End(xlDown).Row
'To apply AutoFill at specified range
.Range("O15").AutoFill Destination:=.Range("O15:O" & k)
End With
End Sub
【讨论】:
就是这样!我对代码所做的唯一不同之处是添加“+15”- Range(“O16”).AutoFill Destination:=Range(“O16:O” & (k + 15))以上是关于vbA autofill 时提示“类range的autofill方法无效”的主要内容,如果未能解决你的问题,请参考以下文章
Excel 或 VBA 问题? Range.Autofill 方法有时会从我不想要的地方开始
16:跳过密码保存,因为可能会提示用户使用 Android Autofill