Джо се опитва да изведе грешка в нов макрос, който току-що е написал.
Редът, който присвоява NextRow, връща грешка, която казва „Променлива на обекта или с не зададена променлива на блок“.
Обектните променливи са доста готини. В старите съвети на адрес бих използвал обикновена променлива като тези:
OrigName = ActiveSheet.Name Worksheets(OrigName).Copy
Има по-добър начин. Можете да дефинирате променлива като всеки обект, например работен лист. Това има няколко предимства. По-кратко е използването на обектната променлива вместо работни листове (OrigName). Също така, докато пишете код, VBA ще знае, че променливата е работен лист и ще предложи подходящите свойства и методи, след като въведете точката. Ето новия код:
Dim WSO as Worksheet Set WSO = Activesheet WSO.Copy
Номерът обаче е, че когато имате обектна променлива, тя трябва да бъде присвоена с ключовата дума Set. Ако не успеете да поставите Set в кода, ще получите малко неинтуитивната „Object Variable or With Block Variable Not Set“. Джо просто трябва да предшества заданието на променливата си с думата Set.