Avatar billede micaud Mester
24. maj 2005 - 18:18 Der 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 !!!!
Avatar billede kabbak Professor
24. maj 2005 - 21:24 #1
Application.OnTime  er brugt her
http://eksperten.dk/spm/379697
Avatar billede micaud Mester
25. maj 2005 - 12:07 #2
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.

Hvad gør jeg ??
Avatar billede kabbak Professor
25. maj 2005 - 20:13 #3
Dim TælNed As Date
Dim Timeout As Date


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
Avatar billede micaud Mester
27. maj 2005 - 22:43 #4
Den virker nu ikke rigtig for mig, den lukker hver gang jeg åbner, men jeg har faktisk selv fået den til at virke :-)

Mange tak for hjælpen.....
Avatar billede micaud Mester
15. oktober 2005 - 09:06 #5
Svar
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester