Avatar billede nlr2000 Nybegynder
26. januar 2005 - 16:18 Der er 10 kommentarer og
1 løsning

Hvordan holder man pause i en makro?

Jeg har en lavet en makro i et regneark, som åbner et andet regneark, der opdaterer nogle kurser over nettet. Makroen skal så gemme regnearket og lukke det, når kurserne er hentet. Det tager ca. 10 sekunder at hente kurserne fra arket er åbnet.

Mit problem er, at jeg ikke vil gemme arket og lukke det, før alle kurserne er opdateret.
Jeg har prøvet at lave en "timer" på 20 sekunder, men den fryser det hele, så der ikke hentes kurser.

Jeg kunne godt tænke mig noget ventetid uden at stoppe kursnedhentningen (som foregår via et programlink til Bloomberg).

Hvordan gøres det?

Tak!
Avatar billede bak Forsker
26. januar 2005 - 17:37 #1
her er en metode fordelt på 2 makro og en fælles variabel

Dim wb As Workbook

Sub test1()
Set wb = Workbooks.Open("d:\eb1.xls")
wb.ActiveSheet.Range("A3").QueryTable.Refresh
Application.OnTime Now + TimeValue("00:00:20"), "CloseWB"
End Sub

Sub CloseWb()
wb.Close savechanges:=True
End Sub
Avatar billede japping Nybegynder
26. januar 2005 - 17:37 #2
Jeg har selv "udviklet" denne rutine:

  If (Diff > TimeValue("0:00:05") And RunMacro) Then
    LastTime = Now
    cmdSend_Click
    Application.OnTime Now + TimeValue("00:00:30"), "Ark1.Start"
  End If

Macroen hvor jeg anvender den hedder Start (i Ark1). Det der sker er, at macroen kalder sig selv efter tiden    Now+TimeValue(00:00:30"). Her kan du så indsætte din tid i stedet for mine 30 sekunder.

Forhåbentlig kan du bruge dette ved lidt modifikation ?
Avatar billede japping Nybegynder
26. januar 2005 - 17:38 #3
Nå, jeg var vist 2 sekunder for sent på den :-)
Avatar billede bak Forsker
26. januar 2005 - 17:57 #4
2 sek. er tæt, det er løsningerne også :-)
Avatar billede nlr2000 Nybegynder
27. januar 2005 - 08:54 #5
Jeg kigger på sagerne i dag. Jeg er nybegynder, så det tager noget tid.

Jeg kan dog se, jeg har formuleret mig lidt forkert. Makroen, som skal sende gemmemakroen i venteposition i 20 sekunder, ligger nemlig i samme excelark (nemlig ark2), men det finder jeg nok ud af...
Avatar billede nlr2000 Nybegynder
27. januar 2005 - 13:28 #6
Jeg kan ikke få det til at køre. Det skyldes sikkert, at jeg a) er begynder og b) jeg forklarede problemet lidt dårligt.
Hvis vi nu kigger på nedenstående meget simple makroer. Så skal makro 1 konstrueres, så makro2 starter 20 sekunder senere.
Hvad skal ændres/laves i makro1, for at makro 2 starter? Jeg prøvede at kopiere lidt af tidligere vist kode.

Sub Makro1()
If (Diff > TimeValue("0:00:05") And RunMacro) Then
    LastTime = Now
    Application.OnTime Now + TimeValue("00:00:30"), "Makro2"
End If
End Sub

Sub Makro2()
Range("A1").Select
ActiveCell.FormulaR1C1 = "klar"
End Sub
Avatar billede nlr2000 Nybegynder
27. januar 2005 - 14:07 #7
Jeres første svar er sikkert rigtige, men jeg accepterer, når jeg forstår det helt - altså når det simple eksempel ovenfor dur!

Tak for hjælpen!
Avatar billede nlr2000 Nybegynder
27. januar 2005 - 15:54 #8
Dog ikke med funktionen timer eller pause, da de fryser min kursnedtagning...
Application.ontime ser umiddelbart god ud, men i mit eksempel må noget være galt?
Avatar billede bak Forsker
27. januar 2005 - 21:58 #9
dette burde virke
Dim wb As Workbook

Sub test1()
Set wb = thisworkbook
wb.Sheets("MitArkNavn").Range("A3").QueryTable.Refresh
Application.OnTime Now + TimeValue("00:00:20"), "ShowReady"
End Sub

Sub ShowReady()
[A1]="Klar"
End Sub
Avatar billede nlr2000 Nybegynder
28. januar 2005 - 09:27 #10
Godt!
Bak, læg et svar, så du kan få pointene!
Avatar billede bak Forsker
28. januar 2005 - 16:38 #11
:-)
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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