Avatar billede ehlerz Nybegynder
17. august 2007 - 09:20 Der er 18 kommentarer

Kører makroer i ikke aktive ark vi VBA

Hej
Jeg har et regneark der automatisk kører nogle makroer når klokken er hhv. 9:00, 9:30 og 15:30. Makroerne kopiere en søjle og sætter dem ind som værdier i en anden søjle på de angivne tidspunkter. Mit problem er at arket hvori makroerne skal køre ikke nødvendigvis er aktivt. Dvs. jeg kan godt sidde og arbejde i et andet regneark. Hvis jeg gør det så virker makroerne ikke?
Er der en måde hvorpå man kan få makeroerne til at køre selvom arket ikke er aktivt?
Avatar billede gider_ikke_mere Nybegynder
17. august 2007 - 09:33 #1
Du kan checke alle åbne regneark med koden

Sub test()
For Each y In Application.Workbooks
    MsgBox y.Name
Next
End Sub

Det er lidt farligt at skifte til et andet ark, hvis brugeren sidder og arbejder i et andet.
Avatar billede gider_ikke_mere Nybegynder
17. august 2007 - 09:39 #2
Hvad laver makroen?
Avatar billede ehlerz Nybegynder
17. august 2007 - 10:15 #3
ok, Jeg har et regneark med realtidsopdateret óbligationskurser m.v. Klokken 9 og klokken 15:30 tager makroen en kopi af disse realtidskurser og indsætter dem som værdier i to andre kolonner på de angivne tidspunkter. Makroerne virker fint og jeg køre dem via application.ontime og det virker fint, men KUN hvis jeg har arket maksimeret foran mig på skærmen. Ellers får jeg en fejlmeddelse om at den ikke lan finde arket. Jeg ville jo netop gerne undgå manuelt at være tvunget til at maksimere mit ark på de angivne tidspunkter?? Kan dette lade sig gøre, og hvordan gør jeg??
Avatar billede kabbak Professor
17. august 2007 - 14:52 #4
Husk at skrive hvilken workbbook den skal skrive i

Den workbook med koden i hedder altid ThisWorkbook

ThisWorkbook.sheets(1.range o.s.v.
Avatar billede ehlerz Nybegynder
17. august 2007 - 15:09 #5
hmm kabbak, jeg er ikke sikker på at jeg forstår dig helt. Kan du eventuelt uddybe lidt??
Avatar billede excelent Ekspert
17. august 2007 - 20:04 #6
Sub run()
Range("a1") = Now
Application.OnTime TimeValue("00:00:1") + Now, "run"
Call tst
End Sub

Sub tst()
[a2] = [a2] + 1
End Sub

de 2 ovenstående kører fint samtidig med en anden projektmappe er
åben og aktiv

prøv at paste din kode så vi kan checke for mulige problemer.
Avatar billede ehlerz Nybegynder
20. august 2007 - 08:28 #7
Hej Excelent

Her er en af mine makroer.

Sub Makro1()

    Range("E5:E40").Select
    Selection.Copy
    Range("G5").Select
    Selection.PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
    Range("a1").Select
    ThisWorkbook.Save
Denne sammen med 3 andre også meget simple makroer er skrevet i Module1 og virker helt fint.
Derudover har jeg i Thiswoorkbook skrevet;

Private Sub Workbook_open()

Application.OnTime TimeValue("09:30:00"), "makro1"

Application.OnTime TimeValue("15:30:00"), "makro2"

Application.OnTime TimeValue("09:00:00"), "makro3"

Virker også helt fint men kun når arket er aktivt.
Jeg er ikke for god til det her VBA så jeg har nok overset noget meget vigtigt.
Avatar billede kabbak Professor
20. august 2007 - 18:10 #8
Når du arbejder i en ikke aktiv projektmappe, kan du ikke bruge .Select

Ret:

Range("E5:E40").Select
    Selection.Copy
    Range("G5").Select
    Selection.PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
    Range("a1").Select
    ThisWorkbook.Save

til

    ThisWorkbook.Worksheets("Ark1").Range("E5:E40").Copy
    ThisWorkbook.Worksheets("Ark1").Range("G5").PasteSpecial Paste:=xlPasteValues
    ThisWorkbook.Save
Avatar billede kabbak Professor
20. august 2007 - 18:22 #9
eller

Dim Data As Variant
    Data = ThisWorkbook.Worksheets("Ark1").Range("E5:E40")
    ThisWorkbook.Worksheets("Ark1").Range("G5:G" & UBound(Data) + 4) = Data ' de + 4 er fordi den starter i G5
ThisWorkbook.Save
Avatar billede excelent Ekspert
20. august 2007 - 18:53 #10
er der mere kode i denne, for dette alene kører ikke timeren ?

Private Sub Workbook_open()
Application.OnTime TimeValue("09:30:00"), "makro1"
Application.OnTime TimeValue("15:30:00"), "makro2"
Application.OnTime TimeValue("09:00:00"), "makro3"
Avatar billede gider_ikke_mere Nybegynder
20. august 2007 - 19:13 #11
Hvorfor ikke blot tilføje 3 jobs i "planlagte opgaver". Så kører det også, uanset om Excel er åbnet eller ej.
Avatar billede ehlerz Nybegynder
21. august 2007 - 08:08 #12
Hey Allesammen, mange tak for jeres henvendelser. Excelent, jeg kan sende dig arket så du kan se præcis hvordan det er opbygget i sin simple form??. Og nej der er ikke mere kode i timeren og det virker faktisk fint når bare arket er åbent og aktivt.
Kabbak, jeg prøver at kigge lidt på dine løsningsforslag og vender tilbage

Mange tak so far
Avatar billede excelent Ekspert
21. august 2007 - 15:51 #13
ok
pm@madsen.tdcadsl.dk
Avatar billede gider_ikke_mere Nybegynder
11. november 2007 - 19:50 #14
Hvordan går det her?
Avatar billede ehlerz Nybegynder
12. november 2007 - 08:12 #15
Hej

Har som sagt opgivet under en anden tråd opgivet arket.
Avatar billede gider_ikke_mere Nybegynder
12. november 2007 - 18:00 #16
Så luk spørgsmålet.
Avatar billede ehlerz Nybegynder
13. november 2007 - 08:15 #17
Jep!
Avatar billede gider_ikke_mere Nybegynder
13. november 2007 - 23:31 #18
Husk at acceptere dit eget 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
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