首页 > 解决方案 > 选择工作表后 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 应该具有相同的行号。所有这些的原因是重新格式化数据。

标签: excelvba

解决方案


不要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+

推荐阅读