excel - 选择工作表后 Range 类的选择方法失败
问题描述
我正在尝试使用自动填充来填充与另一个工作表具有相同行数的工作表。我收到“范围类的自动填充方法失败”错误消息。它无法找到我想要开始的范围。
我搜索了其他一些类似的问题,他们建议将其放在一个模块中(对我来说已经是这种情况)或在尝试自动填充数据之前激活工作表。到目前为止都没有工作
'Working between 2 workbookss
Dim Transactions As Workbook
Set Transactions = ActiveWorkbook
'Sells
Dim SellData As Worksheet
Set SellData = Transactions.Sheets("SellData")
Dim lrSell As Long
SellData.Activate
lrSell = Cells(Rows.Count, "H:H").End(xlUp).Row
Dim MonthlySales As Worksheet
Set MonthlySales = Transactions.Sheets("Monthly Sales")
MonthlySales.Activate
MonthlySales.Range("A2:CG2").AutoFill Destination:=Range("A3:CG" & (lrSell - 2))
'Error happens on last line MonthlySales.Range("A2:CG2")
我也试过
MonthlySales.Activate
MonthlySales.Range("A2:CG2").Select 'This is where the error would come up
Selection.AutoFill Destination:=Range("A3:CG" & (lrSell - 2))
最后,Sell data 和 Monthly sales 应该具有相同的行号。所有这些的原因是重新格式化数据。
解决方案
不要Activate
让不合格的会员电话工作。
SellData.Activate lrSell = Cells(Rows.Count, "H:H").End(xlUp).Row
改为限定成员调用。
lrSell = SellData.Cells(SellData.Rows.Count, "H").End(xlUp).Row
同样在这里:
Dim MonthlySales As Worksheet Set MonthlySales = Transactions.Sheets("Monthly Sales") MonthlySales.Activate MonthlySales.Range("A2:CG2").AutoFill Destination:=Range("A3:CG" & (lrSell - 2))
使用显式限定符 - Range
(或Cells
)在没有限定符的情况下使用几乎总是一个等待发生的错误。
Dim MonthlySales As Worksheet
Set MonthlySales = Transactions.Sheets("Monthly Sales")
MonthlySales.Range("A2:CG2").AutoFill Destination:=MonthlySales.Range("A2:CG" & (lrSell - 2))
请注意,如果lrSell - 2
为零或负数,这将引发错误 1004。最好断言事实并非如此:
lrSell = SellData.Cells(SellData.Rows.Count, "H").End(xlUp).Row
Debug.Assert lrSell > 2 ' we're subtracting 2 later, so this must be 3+