Referera till ett kalkylblad med objektvariabel - Excel-tips

Innehållsförteckning

Joe försöker pussla ut ett fel på ett nytt makro som han just skrev.

Raden som tilldelar NextRow returnerar ett fel som säger "Objektvariabel eller med blockvariabel inte inställd".

Objektvariabler är ganska coola. I de gamla tipsen på skulle jag använda en vanlig variabel så här:

OrigName = ActiveSheet.Name Worksheets(OrigName).Copy

Det finns ett bättre sätt. Du kan definiera en variabel som ett valfritt objekt, till exempel ett kalkylblad. Det finns flera fördelar med detta. Det är kortare att använda objektvariabeln istället för Worksheets (OrigName). När du skriver kod vet VBA också att variabeln är ett kalkylblad och erbjuder lämpliga egenskaper och metoder efter att du har skrivit in punkten. Här är den nya koden:

Dim WSO as Worksheet Set WSO = Activesheet WSO.Copy

Tricket är dock att när du har en objektvariabel måste den tilldelas Set-nyckelordet. Om du misslyckas med att sätta Set i koden får du den något icke-intuitiva "Object Variable or With Block Variable Not Set". Joe behöver helt enkelt föregå sitt variabla uppdrag med ordet Set.

Intressanta artiklar...