Åpne en arbeidsbok men Deaktivering makroer

August 16  by Eliza

Bob behandler informasjon i en arbeidsbok ved hjelp av en makro. Han ønsker for makro for å åpne en annen arbeidsbok som har en Autoclose makro i det, men han ønsker ikke det å kjøre når den andre arbeidsboken er lukket. Han er på utkikk etter en måte å åpne den andre arbeidsboken, under kontroll av makroen i den første arbeidsboken, uten å aktivere makroene i den andre arbeidsboken.

Det er ingen måte å deaktivere makroer i den andre arbeidsboken når du åpner den under makrokontroll. (Hvis du åpner den manuelt, kan du selvsagt holde nede Skift-tasten mens arbeidsboken åpnes, men det hjelper ikke din makro det har ingen fingre å hold sådd at nøkkelen!)

Det er et par av midlertidige løsninger, men. Den første innebærer å endre koden som lukker det andre arbeidsboken, på denne måten:

Application.EnableEvents = False
Arbeidsbøker ("SecondBook.xls"). Lukk
Application.EnableEvents = True

Ved å sette EnableEvents eiendom til False, vil hendelsen som kommer til å skje (lukker arbeidsboken) ikke utløse Autoclose makro. Du kan (og bør) deretter sette EnableEvents eiendom til True, slik at hendelser kan senere fortsette.

En annen løsning er å sette en slags "flagg" i Autoclose makro av den andre arbeidsboken. Dette flagget kan teste for å se om den første arbeidsboken er åpen, og hvis det er, ikke kjøre den viktigste koden i Autoclose makro.

For å gjøre dette, i den andre arbeidsboken på toppen av modulen sider legge til følgende kode:

Dim AutoCloseDisabled som boolsk
Sub DisableAutoClose ()
AutoCloseDisabled = True
End Sub

Legg merke til at erklæringen setningen for AutoCloseDisabled variabelen er utenfor enhver prosedyre, som betyr at det vil være global i omfang og tilgjengelig innenfor alle prosedyrer.

Deretter endre Autoclose makro, slik at kroppen er innelukket i en If-setning, som vist her:

Sub Autoclose ()
'variabeldeklarasjoner her

Hvis ikke AutoCloseDisabled deretter

'Body of Autoclose her

Ende hvis
End Sub

Tanken er at når den andre arbeidsboken åpnes normalt, den AutoCloseDisabled variabel vil automatisk bli satt til False. (Boolske variabler standard til False når de blir vedtatt.) Siden DisableAutoClose prosedyren er aldri kjørt i arbeidsboken, hvis setningen i Autoclose makro gjør selve kroppen av makroen som skal utføres.

Hvis du åpner den andre arbeidsboken fra første arbeidsbok, deretter koden i ditt første arbeidsbok kan ringe DisableAutoClose makro i den andre arbeidsboken, og dermed sette AutoCloseDisabled flagget til True. Dette betyr at når den andre boken lukkes, vil Hvis setningen hoppe over kroppen av Autoclose makro.

ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (3158) gjelder for Microsoft Excel 97, 2000, 2002, og 2003. Du kan finne en versjon av dette tipset for Båndet av Excel (Excel 2007 og senere) her: Åpne en arbeidsbok men deaktivere makroer.