Lagring ikkeeksisterende ændringer

Du har sikkert haft dette ske for dig: Du åbner en projektmappe, kig rundt på nogle af de regneark, og derefter lukke projektmappen. Som en del af lukning, Excel spørger, om du vil gemme dine ændringer, men du har ikke foretage nogen ændringer, du kun kiggede rundt. Hvad giver?

Internt Excel fastholder hvad der ofte kaldes en "beskidt flag." Dette flag bliver sat, når du gør en slags forandring til en projektmappe. Når du gemmer projektmappen, bliver flaget ryddet. Hvis flaget er sat, når du lukker projektmappen, Excel spørger, om du vil gemme projektmappen.

Det beskidte flag kan naturligvis få sat hvis du laver nogle eksplicit ændring i en projektmappe, såsom at redigere en celle eller ændre strukturen i projektmappen på en eller anden måde. Men det kan også få sat, selv om du ikke gør noget eksplicit. Nogle gange, Excel gør noget, der påvirker indholdet af projektmappen blot i kraft af det faktum, du åbnede den. Dette sætter det beskidte flag og dermed udløser anmodningen om at spare.

To store syndere i at gøre denne automatiske ændringer er i dag, og nu fungerer regneark. Disse returnere systemets dato og systemet tid hhv. Første gang du åbner en projektmappe, bliver de opdateret i den normale for nyberegning. Da de udgør en ændring, Excel sætter beskidt flag.

Det beskidte flag kan også indstilles automatisk, hvis projektmappen indeholder links til oplysninger om andre regneark. Excel henter data, hvilket er en ændring til den projektmappe, du lige har åbnet. Excel fastsætter ikke det beskidte flag, hvis du bare navigere rundt i projektmappen, gøre ting som valg af celler eller skifte til et andet regneark.

En måde du kan komme rundt problemet er at, selvfølgelig, fjerne hvad der forårsager ændringer i din projektmappe. For de fleste mennesker, det er bare ikke praktisk. Du kan også tilføje en automatisk makro, der vil køre lige før projektmappen lukkes, såsom de følgende, som bør være en del af ThisWorkbook objektet:

Private Sub Workbook_BeforeClose (Annuller Som Boolean)
ActiveWorkbook.Saved = True
End Sub

Denne makro gør intet mere end rydde beskidte flag (det Gemt ejendom). Selv om denne fremgangsmåde vil arbejde, er der en enorm risiko ved at bruge det. Med makroen på plads, vil Excel aldrig spørge dig, om du vil gemme ændringerne når der afsluttes, selv om legitime ændringer blev gjort til projektmappen. Således vil du nødt til at huske at eksplicit gemme noget i projektmappen, når du foretager ændringer. Hvis du ikke gør det, kan du miste noget af dit arbejde.

En variation af denne tilgang, en, der er mindre nådesløs af glemte ændringer-er rent faktisk at gøre makro del af Workbook_Open procedure for ThisWorkbook objekt:

Private Sub Workbook_Open ()
ActiveWorkbook.Saved = True
End Sub

Nu Excel åbner projektmappen, beregner (herunder foretage ændringer baseret på funktioner som i dag, og nu), og derefter rydder beskidt flag. Hvis du lukker det samme, er du ikke spurgt, om du vil gemme dine ændringer. Du vil blive spurgt, om du vil gemme ændringerne, men hvis du foretager ændringer efter denne macro har kørt med andre ord, efter regnearket var fuldt åbnet.

Udover automatisk genberegne funktioner, der sætter det beskidte flag, er det også muligt, at din projektmappe indeholder en makro eller to, der automatisk, når du åbner den. Hvis makroen gør en slags forandring i projektmappen, så vil det naturligvis sætte beskidt flag. Du kan tjekke de VBA Editor at se, om dette er tilfældet.

ExcelTips er din kilde til omkostningseffektiv Microsoft Excel træning. Dette tip (2081) gælder for Microsoft Excel 97, 2000, 2002, og 2003. Du kan finde en version af dette tip til båndet grænseflade Excel (Excel 2007 og nyere) her: Saving ikkeeksisterende ændringer.


© 2021 Zajacperrone.com | Contact us: webmaster# zajacperrone.com