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+