Я пытаюсь полуавтоматизировать файл, используя код для вставки / копирования / вставки значений и формул. Когда я запускаю этот код один раз, он работает нормально. Попытка выполнить код в любой последующий момент времени приводит к «ошибке времени выполнения 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».