在Excel宏中引用行号的公式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Excel宏中引用行号的公式相关的知识,希望对你有一定的参考价值。
我正在尝试制作一个宏,它将根据实际需要的数量自动填充多个页面。从另一个工作簿导入的每个项目都将收到自己的“页面”。这些页面位于一张纸上,由打印区域分隔。目前我有一个计数器,它计算需要页面的项目数(在我的例子中为11),然后我有一个每页行数的值(34)。将它们相乘以确定要自动填充的行数(374)。问题是让宏用数字替换范围变量(374)。
我试图使用间接功能,但收到编译错误:“预期:列表分隔符或)”我也尝试了偏移功能,但收到相同的错误。
到目前为止这是我的宏:
Sub Sheet_Fill()
Sheet_Fill Macro
ActiveCell.Range("A1:I34").Select
Selection.AutoFill Destination:=ActiveCell.Range("A1:I68"), Type:= _
xlFillDefault
ActiveCell.Range("A1:I68").Select
End Sub
基本上,我想用我之前提到的公式自动填充I列的行号的东西替换“I68”。在11个零件的示例情况下,该数字将自动填充“374”
答案
您的宏的原始版本应该是这样的:
Sub Sheet_Fill()
'Sheet_Fill Macro
Dim rownum As Long
rownum = 374 'Or a range? Where is this number located?
ActiveCell.Range("A1:I34").Select
Selection.AutoFill Destination:=ActiveCell.Range("A1:I" & rownum), Type:= _
xlFillDefault
ActiveCell.Range("A1:I" & rownum).Select
End Sub
清理了一下(这应该工作):
Sub Sheet_Fill()
Dim rownum As Long
rownum = 374 'Or a range? Where is this number located?
Range("A1:I34").AutoFill Destination:=ActiveCell.Range("A1:I" & rownum), Type:=xlFillDefault
End Sub
需要一些关于你存储这个374的更多细节 - 它是否在一个单元格中?可以从您的表格设置中计算出来吗?在给出答案之前,这是我能做的最好的事情。
另一答案
尝试:
Selection.AutoFill Destination:=ActiveCell.Range("A1:I" & lr), Type:= xlFillDefault
其中lr是最后一行......你要么想要动态地确定它,要么你可以指定从一个单元格中拉取一个值,例如:
'dynamic
lr = sheets(1).cells(sheets(1).rows.count,1).end(xlup).row
'from a cell
lr = sheets(1).range("A1").value
一般评论...... avoid using select/activate!
以上是关于在Excel宏中引用行号的公式的主要内容,如果未能解决你的问题,请参考以下文章
excel公式问题,获取行号列号之后,如何获取该单元格内的值。