在Excel宏中引用行号的公式

问题描述 投票:0回答:2

我正在尝试制作一个宏,它将根据实际需要的数量自动填充多个页面。从另一个工作簿导入的每个项目都将收到自己的“页面”。这些页面位于一张纸上,由打印区域分隔。目前我有一个计数器,它计算需要页面的项目数(在我的例子中为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”

excel vba
2个回答
0
投票

您的宏的原始版本应该是这样的:

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的更多细节 - 它是否在一个单元格中?可以从您的表格设置中计算出来吗?在给出答案之前,这是我能做的最好的事情。


0
投票

尝试:

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!

© www.soinside.com 2019 - 2024. All rights reserved.