Код VBA разрывается после первого запуска - Ошибка 91 - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь полуавтоматизировать файл, используя код для вставки / копирования / вставки значений и формул. Когда я запускаю этот код один раз, он работает нормально. Попытка выполнить код в любой последующий момент времени приводит к «ошибке времени выполнения 91». При отладке ошибки выделяется код, в котором я пытаюсь использовать фразу «na.Row» для вызова номера строки, определенного ранее в коде.

Примечание: я чрезвычайно новичок в VBA и не имею предшествующего фона кодирования; Я уверен, что это могло бы быть намного более чистым и кратким.

Sub AdvtoStd_Click()

'Names the Worksheets

    Dim ws As Worksheet
    Set ws = Worksheets("Org")

    Dim ar As Worksheet
    Set ar = Worksheets("Adv. Retrieve")

    Dim sr As Worksheet
    Set sr = Worksheets("Std. Retrieve")


'Finds the cell with 'No_Account' and names it id

    Dim na As Range
    Set na = ws.Range("A:A").Find("No_Account", LookIn:=xlValues)

    Dim Aacts As Range
    Set Aacts = ar.Range("A:A").Find("Accounts", LookIn:=xlValues, LookAt:=xlWhole)


'Clears the old numbers on the Retail worksheet

    Worksheets("Retail").Activate
    Range("A4:E2000").ClearContents

'Copies the accounts from the Org to Retail worksheet

    ws.Range("A4:A2000").Copy
    Sheets("Retail").Range("A4:A2000").PasteSpecial xlPasteValues

'Inserts the VLookup into cells B4 and C4 + Inserts the Variance calculation in cell E4
'Copies the VLookup and Variance calculation down to 'No_Account'

    Sheets("Retail").Range("B4").Value = "=VLOOKUP(A4,'Adv. Retrieve'!A:I,3,FALSE)"
    Sheets("Retail").Range("C4").Value = "=VLOOKUP(A4,'Std. Retrieve'!A:I,3,FALSE)"
    Sheets("Retail").Range("E4").Value = "=C4-B4"
    Sheets("Retail").Range("B4:E4").Copy
    Sheets("Retail").Range("B5", Sheets("Retail").Range("E" & na.Row)).PasteSpecial xlPasteFormulas

'Calculates the TOTALs

    Sheets("Retail").Range("B" & na.Row + 2).Value = "=SUM(OFFSET(B1,,,ROW()-1,1))"
    Sheets("Retail").Range("C" & na.Row + 2).Value = "=SUM(OFFSET(C1,,,ROW()-1,1))"

'Copies the Hyperion values

    ar.Range("B" & Aacts.Row).Copy
    Sheets("Retail").Range("B" & na.Row + 3).PasteSpecial xlPasteValues

Ошибка возникает в той части кода, в которой я пытаюсь вставить формулы в столбцы B:E до номера строки, в которой имена счетов заканчиваются в столбце A.

Как я уже упоминал ранее, код работает точно так, как нужно, когда я открываю файл и запускаю его один раз, но любая вторичная попытка запустить код приводит к ошибке «91».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...