Excel 选择工作表后,范围类的选择方法失败
我正在尝试使用“自动填充”来填充与另一个工作表具有相同行数的工作表。我收到“范围类的自动填充方法失败”错误消息。它无法找到我要从中开始的范围 我搜索了一些其他类似的问题,他们建议在尝试自动填充数据之前,将其放入模块(对我来说已经是这样)或激活工作表。到目前为止,两人都没有成功Excel 选择工作表后,范围类的选择方法失败,excel,vba,Excel,Vba,我正在尝试使用“自动填充”来填充与另一个工作表具有相同行数的工作表。我收到“范围类的自动填充方法失败”错误消息。它无法找到我要从中开始的范围 我搜索了一些其他类似的问题,他们建议在尝试自动填充数据之前,将其放入模块(对我来说已经是这样)或激活工作表。到目前为止,两人都没有成功 'Working between 2 workbookss Dim Transactions As Workbook Set Transactions = ActiveWorkbook '
'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))
最后,销售数据和月销售额应该具有相同的行号。所有这些都是为了重新格式化数据。不要激活工作表以使不合格的会员呼叫正常工作 改为限定成员呼叫
lrSell = SellData.Cells(SellData.Rows.Count, "H").End(xlUp).Row
这里也一样:
使用显式限定符-范围
(或单元格
)在没有限定符的情况下使用几乎总是一个等待发生的错误
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+
通常,您希望在代码中[避免使用激活和选择](如何避免在excel vba中使用选择)。为代码中的所有范围指定工作表也是一个好主意,
lrSell
的值是多少?感谢您帮助我清理代码,但我仍然收到相同的问题``MonthlySales.Range(“A2:CG2”)。自动填充目标:=MonthlySales.Range(“A3:CG”&(lrSell-2))``FYI,lrSell的当前值为1478@signup4stuffmatt尝试将第2行包含在目的地范围内,就是这样。。。疯狂的一个数字打破了一切。。谢谢你的帮助
Dim MonthlySales As Worksheet
Set MonthlySales = Transactions.Sheets("Monthly Sales")
MonthlySales.Range("A2:CG2").AutoFill Destination:=MonthlySales.Range("A2:CG" & (lrSell - 2))
lrSell = SellData.Cells(SellData.Rows.Count, "H").End(xlUp).Row
Debug.Assert lrSell > 2 ' we're subtracting 2 later, so this must be 3+