Excel宏中行号的引用公式

时间:2019-03-25 16:22:23

标签: excel vba

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

本质上,我想将“ I68”替换为将用前面提到的公式自动填充I列的行号的内容。在11个零件的示例情况下,数字将自动填充为“ 374”

2 个答案:

答案 0 :(得分: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!

答案 1 :(得分: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的存储位置的详细信息-它在单元格中吗?可以根据您的表格设置进行计算吗?在给出这些答案之前,这是我所能做的最好的事情。