Jag har använt Static
variabler i det förflutna – lokala variabler som behåller sitt värde mellan anrop – men visste du att hela funktioner och subs också kan markeras som statiska?
I fallet med en Static Function
eller Static Sub
, varje lokal variabel i rutinen beter sig som om den deklarerades med Static
nyckelord individuellt. Kolla in följande anteckning från dokumentationen för Static Statement:
Det Statiska uttalandet och Statisk nyckelord är lika, men används för olika effekter. Om du deklarerar en procedur genom att använda Statisk nyckelord (som i Static Sub CountSales ()
), lagringsutrymmet för alla lokala variabler inom proceduren tilldelas en gång, och värdet på variablerna bevaras under hela tiden programmet körs. För icke-statiska procedurer tilldelas lagringsutrymme för variabler varje gång proceduren anropas och släpps när proceduren avslutas. Statisk uttalande används för att deklarera specifika variabler inom icke-statiska procedurer för att bevara deras värde så länge som programmet körs.
Ärligt talat använder jag sällan nyckelordet Static för enskilda variabler. Jag kämpar för att se när jag skulle vilja använda den här funktionen för en hel funktion eller sub. Som sagt, det är viktigt att veta att det är möjligt. Du vet aldrig när du kan stöta på någon kod i naturen som använder den här funktionen...
Tips om hatten till Jan Karel Pieterse
Äran för denna saftiga bit av information går till Jan Karel Pieterse, en Excel MVP och typsnitt för VBA-kunskap och trivia. Jag lärde mig först att detta var ett alternativ från ett av hans LinkedIn-inlägg:
Du lär dig något nytt varje dag!