我正在尝试通过使用代码来插入/复制/粘贴值和公式来半自动化文件。当我运行此代码一次时,它可以正常工作。尝试在任何后续时间运行代码会导致“运行时错误'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”。