我正在尝试制作一个宏,该宏将根据实际需要的数量自动填充许多页面。从另一个工作簿导入的每个项目都会收到自己的“页面”。这些页面在一页纸上,按打印区域分开。当前,我有一个计数器来计算需要页面的项目数(在我的示例中为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”
答案 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的存储位置的详细信息-它在单元格中吗?可以根据您的表格设置进行计算吗?在给出这些答案之前,这是我所能做的最好的事情。