24. maj 2005 - 18:18Der er
4 kommentarer og 1 løsning
Stop application i en loop
Jeg har et regneark, som jeg gerne vil have skal lukke og gemme automatisk, såfremt der ikke har været nogen aktivitet i regnearket i 1 minut.
Min tanke gang er, at en "time" er indsat i celle B5 og ændres ved "changes" i arket.
Herefter måler macroen på om differencen mellem celle B5 og "now" er over eller under et minut, hvis over så lukker og gemmer den automatisk. Loopet har jeg lavet med en applikation "Application.OnTime Now + TimeValue("00:00:01"), "auto_close()" (hvor selve suben er auto_close() og hvis tidsdifferencen er under et minut, så kører macroen automatisk efter et sekund igen, som et slags loop)
Det fungerer fint. Problemet opstår, når man selv vil lukke regnearket på sædvanligvis, så køerer "Application.OnTime Now + TimeValue("00:00:01"), "auto_close()" stadig i min macro, hvilket vil sige, at hvis jeg lukker og sig ja eller nej til at gemme, og så åbner den automatisk regnearket igen, fordi min application stadig kører indtil tidsdifferencen er under 1 minut. Hvordan stopper jeg den application, når jeg manuelt lukker arket ??
Jeg har prøvet at kører det hele med loop, men så kan jeg jo ikke arbejde i arket mens loopen kører. Jeg ved godt, at jeg kan bruge application.quit, men den lukker også eventuellet andre regneark, hvorfor det ikke er en mulighed.
Først gang herinde, så jeg håber på nogle gode konstruktive svar.... Tak !!!!
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Tak for det, det virker jo uden problemer. Jeg leger dog med tanken om, at på statusbaren skal der være en nedtælling de sidste 10 sekunder, hvorfor jeg har brug for et loop af en art, der ikke påvirker brugeren.
Jeg forsøgte at tilføje nedenstående sub nedtælling ude i et generelt modul og ændre lidt i den sub LukFil, som I beskriver
Sub nedtælling() TimeOut = Format("00:00:05", "hh.mm.ss") TælNed = Now + TimeValue("00:00:01") Debug.Print TimeOut Debug.Print Format(LukkeTid - Time, "hh.mm.ss") Debug.Print "" If Format(LukkeTid - Time, "hh.mm.ss") < TimeOut Then Application.StatusBar = "Auto gem & lukning om " & Format(LukkeTid - Time, "hh.mm.ss") Debug.Print Format(LukkeTid - Time, "hh.mm.ss") Else Application.StatusBar = False End If Application.OnTime TælNed, "nedtælling" End Sub
Sub LukFil() TælNed = 0 If TælNed = 0 Then Application.OnTime TælNed, "nedtælling", , False LukkeTid = 0 'Gem og luk filen ThisWorkbook.Close savechanges:=True End Sub
Men desværre kan jeg ikke få min nye application til at stoppe igen, jeg prøvede som I kan se "If TælNed = 0 Then Application.OnTime TælNed, "nedtælling", , False", men det virker ikke.
Public Sub TestLuk() Timeout = Now + TimeValue("00:00:05") Nedtælling End Sub
Sub Nedtælling()
TælNed = Now + TimeValue("00:00:01") If Now < Timeout Then Application.StatusBar = "Auto gem & lukning om " & Format(Timeout - Now, "hh.mm.ss") Application.OnTime TælNed, "nedtælling" Else ThisWorkbook.Close savechanges:=True Exit Sub End If End Sub
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.