Ошибка при запуске макроса на другом листе

Я пишу код, который работает только на листе 1.

Входные данные взяты из рабочего листа 2.

Если я запускаю макрос, когда лист 1 активен, код работает нормально.

Однако, если я запустил его с помощью кнопки на листе 3 (как панель инструментов), он покажет сообщение об ошибке:

Run-time error '1004' Method 'Range' of object '_worksheet' failed.

Sub processsap()


 Dim SAPData As Worksheet
 Dim SAP As Worksheet
 Dim lr As Long

 Set SAPData = Worksheets("SAP Data")
 Set SAP = Worksheets("SAP")

     lr = SAPData.Range("A10000").End(xlUp).Row


 With SAP

        .UsedRange.ClearContents

        .Range("A1") = "='SAP Data'!B2"
        .Range("B1") = "='SAP Data'!C2"
        .Range("C1") = "=RIGHT(LEFT(G1,15),10)"
        .Range("D1") = "='SAP Data'!V2"
        .Range("E1") = "='SAP Data'!Q2"
        .Range("F1") = "=-99999"
        .Range("G1") = "='SAP Data'!D2"
        .Range("H1") = "='SAP Data'!O2"
        .Range("L1") = "='SAP Data'!E2"
        .Range("M1") = "='SAP Data'!F2"
        .Range("N1") = "='SAP Data'!G2"
        .Range("O1") = "='SAP Data'!M2"
        .Range("Q1") = "=IF('SAP Data'!N2=""XXXX"",""XT71"",'SAP Data'!N2)"
        .Range("T1") = "='SAP Data'!S2"
        .Range("U1") = "='SAP Data'!W2"
        .Range("AB1") = "=AJ1"
        .Range("AC1") = "=AK1"
        .Range("AF1") = "=AJ1"
        .Range("AG1") = "=AK1"
        .Range("AJ1") = "=VLOOKUP(AS1,FXrates!B:D,2,FALSE)*AK1"
        .Range("AK1") = "='SAP Data'!AD2"
        .Range("AL1") = "=AJ1"
        .Range("AS1") = "='SAP Data'!K2"
        .Range("AV1") = "=IF(D1=""IC RC - SLUITREKENING"",111983780,VLOOKUP(G1,'\\insim.biz\wpsgroups\120132\Finance\ART\2017\10\SCF\[DF ART BU Delivery SCFIN002 20171031 Macro version_CPTY V8.1 - w CPT - Copy.xlsm]Position'!$G:$AM,33,FALSE))"
        .Range("BL1") = "='SAP Data'!J2"
        .Range("CF1") = "='SAP Data'!P2"
        .Range("CJ1") = "='SAP Data'!R2"
        .Range("CW1") = "NO_GUARANTEE"
        .Range(Cells(1, 1), Cells(lr - 1, 110)).FillDown
 End With

End Sub

Вы знаете причину?

Спасибо

покажи свой код и, возможно, кто-нибудь ответит тебе

DisplayName 10.09.2018 10:08

Я вставил свой код выше, сообщение об ошибке только для этой строки: «.Range (Cells (1, 1), Cells (lr - 1, 110)). FillDown»

Gong 10.09.2018 10:18
1
2
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
.Range(Cells(1, 1), Cells(lr - 1, 110)).FillDown

... должно быть,

.Range(.Cells(1, 1), .Cells(lr - 1, 110)).FillDown

Рекомендуемая литература

Большое спасибо! Но почему это работает, когда лист 1 открыт?

Gong 10.09.2018 10:26

Это подробно объясняется по предоставленной мной ссылке.

user4039065 10.09.2018 10:30

Ссылку не заметил. Спасибо! Теперь я понимаю.

Gong 10.09.2018 10:32

Другие вопросы по теме