Avatar billede timtoftgaard Praktikant
20. august 2005 - 06:54 Der er 4 kommentarer og
1 løsning

Nedtællngsur

jeg har tidligere fået hjælp til et program, hvor¨jeg laver en måling hver sekund i ca 200 sec. Programmet sørger for at data kommer ind hver sekund, hvorefter data overføres til et nyt ark, når målingen er færdig.
Jeg har nu brug for, at jeg samtidig med at målingen kører, på skærmen i et felt kan se hvor lang tid der er gået.
Der skal sættes en programkode ind, som medfører at jeg i f.eks F1 hele tiden kan se hvor mange sekunder er tilbage af min måling
Nedenfor ses mit visual basic program:

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


Sub Pico()
If i = 0 Then
cRunIntervalSeconds = 4
ElseIf i >= 1 And i < 196 Then
cRunIntervalSeconds = 1
Else
cRunIntervalSeconds = 1
End If
RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds)
Application.OnTime earliesttime:=RunWhen, procedure:=cRunWhat, _
    schedule:=True
End Sub

Sub TheSub()
If i = 0 Then
Sheets("Ark1").Columns("A:A").ClearContents
End If
  i = i + 1
  If i > 196 Then
      Call StopTimer
      Call Flyt
      MsgBox "Kopiering slut & data overført"
      Exit Sub
  End If
Sheets("Ark1").Range("A" & i) = Sheets("Ark1").Range("D1") ' Navn på hovedark
  Call Pico
End Sub

Sub StopTimer()
i = 0
  On Error Resume Next
  Application.OnTime earliesttime:=RunWhen, _
      procedure:=cRunWhat, schedule:=False
End Sub
Public Sub Flyt()
' ret arknavnet til dit ark
If Sheets("Ark2").Range("A1") = "" Then
A = 1
ElseIf Sheets("Ark2").Range("B1") = "" Then
A = 2
Else
A = Sheets("Ark2").Range("A1").End(xlToRight).Offset(0, 1).Column
End If
Sheets("Ark2").Cells(1, A) = Now()
For pp = 2 To 197
Sheets("Ark2").Cells(pp, A) = Sheets("Ark1").Range("A" & pp - 1).Value
Next

'kopierer N1, N2, N3, P1, P2, P3 fra ark(Sekant)


X = 1
For pp = 200 To 210
Sheets("Ark2").Cells(pp, A) = Sheets("start").Range("C" & X).Value
X = X + 1
Next


End Sub
Avatar billede kabbak Professor
20. august 2005 - 11:33 #1
Public RunWhen As Double
Public cRunIntervalSeconds  ' one minutes
Public Const cRunWhat = "TheSub"
Public i As Long

Public SlutTid As Date ' NY linie


Sub Pico()
Dim AntalGange As Integer ' NY linie
AntalGange = 196
If i = 0 Then
cRunIntervalSeconds = 4
ElseIf i >= 1 And i < AntalGange Then ' Rettet
cRunIntervalSeconds = 1
Else
cRunIntervalSeconds = 1
End If
RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds)
Application.OnTime earliesttime:=RunWhen, procedure:=cRunWhat, _
    schedule:=True
  '----------------------------------------------
  If i > 0 Then
  SlutTid = Now() + (TimeSerial(0, 0, 1) * ((AntalGange - i) * cRunIntervalSeconds))
  Sheets("Ark1").Range("F1") = SlutTid - Now()  ' NY linie
  End If
  '----------------------------------------------
 
End Sub
Avatar billede timtoftgaard Praktikant
20. august 2005 - 12:23 #2
Ja - det virker - endnu tak for hjælpen igen - du har været en stor hjælp, og hermed point som fortjent

mvh
Tim
Avatar billede kabbak Professor
20. august 2005 - 12:42 #3
selv tak, men du tog dem selv, jeg havde ikke svaret. ;-))
Avatar billede timtoftgaard Praktikant
20. august 2005 - 12:45 #4
Hov jeg er vist ikke for smart. Jeg er lige ved at oprette et nyt spørgsmål i forlængelse af det gamle, så se lige det, så vi akn få givet dig passende antal point.
Kommer lige om lidt
Avatar billede timtoftgaard Praktikant
20. august 2005 - 12:48 #5
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