Avatar billede timtoftgaard Praktikant
04. februar 2004 - 16:46 Der er 17 kommentarer og
1 løsning

Problem med macro til excel, som er lavet i visual basic

jeg har fået hjlæp til nedenstående macro (http://www.eksperten.dk/spm/456559), men har et problem, idet jeg kan køre min macro en gang, men næste gange stopper den efter få sekunder og siger at den er færdig. Jeg skal så slukke excel, og når jeg starter igen kan jeg køre macroen en gang

Public RunWhen As Double
Public Const cRunIntervalSeconds = 5    ' two minutes
Public Const cRunWhat = "TheSub"
Public i As Long


Sub Pico()
RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds)
Application.OnTime earliesttime:=RunWhen, procedure:=cRunWhat, _
    schedule:=True
End Sub

Sub TheSub()
  i = i + 1
  If i > 25 Then
      MsgBox "Kopiering slut"
      Call StopTimer
      Exit Sub
  End If
  Range("D1").Select
  Selection.Copy
  Range("A" & i).Select
  Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  Call Pico
End Sub

Sub StopTimer()
  On Error Resume Next
  Application.OnTime earliesttime:=RunWhen, _
      procedure:=cRunWhat, schedule:=False
End Sub

Hvad kan jeg gøre, så jeg ikke hele tidne skal slukke programmet for at bruge macro en gang mere ?

Mvh

Tim
Avatar billede mikker Nybegynder
04. februar 2004 - 18:37 #1
Sørger du for at nulstille alle variabler ordentligt?
Det KUNNE måske være fordi i ikke bliver 'nulstillet' ?
på den anden side fylder du jo kolonne a ...

- Mikker
Avatar billede kabbak Professor
04. februar 2004 - 18:50 #2
Sub TheSub()
i = 0' indsat linie, det er den du mangler
  i = i + 1
  If i > 25 Then
      MsgBox "Kopiering slut"
      Call StopTimer
      Exit Sub
  End If
  Range("D1").Select
  Selection.Copy
  Range("A" & i).Select
  Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  Call Pico
End Sub
Avatar billede kabbak Professor
04. februar 2004 - 18:55 #3
og dog hvis rækkerne skal sættes ind under hinanden  i A kolonnen så skal den ikke nulstilles.
Avatar billede kabbak Professor
04. februar 2004 - 18:59 #4
Kan du ikke lige forklare hvad den skal gøre.

Som jeg læser den, kopieres D1 til A &i række' det gør den 25 gange med 2 minutters mellemrum.

Så stoppes den af denne linie
If i > 25 Then
Avatar billede timtoftgaard Praktikant
04. februar 2004 - 19:02 #5
jeg har et felt D4, hvor der løbende sker en måling, og der skal så hver 5 sec sættes en værdi over i A kolonnen. Efter 25 målinger stoppes macroen og så vil kort tid efter køre en ny, men den stopper med det samme
Tim
Avatar billede timtoftgaard Praktikant
04. februar 2004 - 19:02 #6
det er fra D1 og ikke fra D4 som skrev
TIm
Avatar billede kabbak Professor
04. februar 2004 - 19:05 #7
Skal den fortsætte nedad i A kolonnen, ved næste kørsel, eller skal den starte forfra.
Avatar billede timtoftgaard Praktikant
04. februar 2004 - 19:07 #8
Den skal starte forfra og overskrïve A kolonnen, men det ville være bedst hvis hele kolonne A blev slette når jeg starter en ny måling. Jeg kopierer nemlig resultatet over i et andet ark.
Avatar billede kabbak Professor
04. februar 2004 - 19:16 #9
så skal den se sådan ud


Public RunWhen As Double
Public Const cRunIntervalSeconds = 5  ' two minutes
Public Const cRunWhat = "TheSub"
Public i As Long


Sub Pico()
RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds)
Application.OnTime earliesttime:=RunWhen, procedure:=cRunWhat, _
    schedule:=True
End Sub

Sub TheSub()
If i = 0 Then Columns("A:A").ClearContents
  i = i + 1
  If i > 25 Then
      MsgBox "Kopiering slut"
      Call StopTimer
      Exit Sub
  End If
  Range("D1").Select
  Selection.Copy
  Range("A" & i).Select
  Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  Call Pico
End Sub

Sub StopTimer()
i = 0
  On Error Resume Next
  Application.OnTime earliesttime:=RunWhen, _
      procedure:=cRunWhat, schedule:=False
End Sub
Avatar billede timtoftgaard Praktikant
04. februar 2004 - 19:27 #10
Helt perfekt. Lige som jeg gerne ville have den til

Tak Tak

Tim

Point på vej!
Avatar billede kabbak Professor
04. februar 2004 - 19:28 #11
Så må jeg jo hellere svare. ;-))
Avatar billede timtoftgaard Praktikant
04. februar 2004 - 19:41 #12
PS. hvordan stopper man en macro undervejs ?

Tim
Avatar billede kabbak Professor
04. februar 2004 - 19:44 #13
Kør makroen StopTimer()

den stopper den du har sat igang

men alle andre CTRL + Break

Break sidder lige over PageUp tasten
Avatar billede timtoftgaard Praktikant
04. februar 2004 - 19:46 #14
Tak

Tim
Avatar billede timtoftgaard Praktikant
06. februar 2004 - 17:37 #15
Lige endnu et spørgsmål.
Kan du få macroen til at flytte de sidste målte værdier (søjle A), når den nye macro kører over i et andet ark, og blive gemt der. Når så næste måling er slut skal disse tal flyttes over i samme ark men i næste kolonne ???

Jeg vil gerne oprette et spørgsmål, så du kan få point

Tim
Avatar billede kabbak Professor
06. februar 2004 - 17:51 #16
ja det kan jeg godt
Avatar billede timtoftgaard Praktikant
06. februar 2004 - 18:00 #17
spørgsmål på vej

Tim
Avatar billede timtoftgaard Praktikant
06. februar 2004 - 18:18 #18
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