Gå til innhold

[Løst] sekund teller loop VBA


Anbefalte innlegg

Videoannonse
Annonse

Hei.

 

Jeg lurer på hvordan jeg skal lage en sekund teller som teller til 59, å når den er kommet til 59 skal den starte på nytt igjen.

 

Noen forslag?

 

Hei.

 

Vet ikke om det kanskje er noe slikt du hadde tenkt deg? (Se vedlagte fil)Kode sekundteller.doc

Hei.

 

Hei. Takk for svar men får ikke koden helt til og fungere. Jeg har lagd en knapp og kopiert inn koden. Jeg har norsk Excel

og byttet ut button1_click med knapp1_klikk

Public Class Form1
'(på linjen over dukker det opp feilmelding "compile error. invalid outside parameter")
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStartTeller.Click


       Timer1.Enabled = True
       Timer1.Start()
       '(linjen over er farget rød)





   End Sub

   Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
       txtValue.Text = 0
   End Sub

   Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick


       txtValue.Text = txtValue.Text + 1
       If txtValue.Text = 59 Then
           Timer1.Stop()
           '(linjen over er farget rød)
           txtValue.Text = 0
           Timer1.Start()
           '(linjen over er farget rød)


       End If


   End Sub

Lenke til kommentar

Du må helle aldri finne på å benytte teksbokser som et akkumuleringsobjekt. Bruk variabler!

 

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStartTeller.Click
       Timer1.Start()
   End Sub

   Dim Counter As Integer ' Bruk variabler!

   Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
       txtValue.Text = CStr(Counter) ' Sett teksten lik streng representasjon av Counter
   End Sub

   Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

       Counter = (Counter + 1) Mod 60 ' Pluss counter med 1, del på 60 og sett rest inn i Counter.
                                      ' Tallet vil dermed rulle rundt på 59 (59 / 60 = 0 og 59 i rest, 60 / 60 = 1 og 0 i rest)
       txtValue.Text = CStr(Counter)
   End Sub

Endret av GeirGrusom
Lenke til kommentar

Hei.

 

Takk for svar Geir.

 

jeg er veldig fersk når det kommer til programmering så jeg trenger det litt inn med teskje :)

 

Det jeg er ute etter er en kode som får celle A1 til og telle til 59 så starte på nytt igjen.

 

men i koden over her så ser jeg ikke noen cellereferanse og jeg kan ikke nok om programmering enda til og skrive om koden.

jeg får også en del røde linjer når jeg kopierer inn koden.

 

jeg har trykka litt og delt opp noen linjer, men Timer.start() er fortsatt rød. Noen forslag på hvor jeg skal legge inn hvor telleren skal vises? F.eks a1?

 

 

Private Sub Knapp1_klikk(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnStartTeller.Click

Timer1.Start()

End Sub

Dim Counter As variabel ' Bruk variabler!
   Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs)
   Handles Me.Load
   txtValue.Text = CStr(Counter) ' Sett teksten lik streng representasjon av Counter
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
   Handles Timer1.Tick

   Counter = (Counter + 1) Mod 60 ' Pluss counter med 1, del på 60 og sett rest inn i Counter.
                                      ' Tallet vil dermed rulle rundt på 59 (59 / 60 = 0 og 59 i rest, 60 / 60 = 1 og 0 i rest)
   txtValue.Text = CStr(Counter)
End Sub

 

Har prøvd litt her, men fungerer ikke. Ganske sannsynlig at det er Brukerfeil :)

 

Hilsen

 

Torbjørn

Lenke til kommentar

Hei.

 

Da er det ikke så rart. Jeg brukte koden som jeg fikk av Mito55, trodde at det var VBA.

så Beklager det.

 

Det er egentlig bare et lite Hobby prosjekt. skal til slutt bli en Binær klokke.

 

Akkurat nå kommer det ikke noen feilmelding fordi den vil ikke starte, men det er jo da sikkert fordi den er lagd for noe annet enn VBA.

 

Så har du noen forslag på VBA kode for og lage en teller som teller fra 0-59 og starter på nytt igjen?

:)

 

Hilen

 

Torbjørn

Lenke til kommentar

Hei.

 

Har funnet en kode som er laget for Nedtelling, som jeg har fikset litt på. Men klarer ikke helt enda og få den til og restarte.

Sub Knapp1_Klikk()
'
' Knapp1_Klikk Makro
'
   Static timeInterval As Double
   Static cellLocation As Range
   timeInterval = (TimeSerial(0, 0, 1)) / 1
   Set cellLocation = Range("A1")
   If Val(cellLocation.Value) = 59 Then
       Exit Sub
   Else
       cellLocation.Value = Val(cellLocation.Value) + 1
       Application.OnTime Now() + timeInterval, "knapp1_klikk"
   End If

'
End Sub

 

Noen forslag til hvordan jeg skal få den til og starte på 0 og telle opp til 59 igjen?

 

Hilsen

 

Torbjørn

Lenke til kommentar

Du kan gjøre det jeg foreslo tidligere.

 

Sub Knapp1_Klikk()
''
' Knapp1_Klikk Makro
'
   Static timeInterval As Double
   Static cellLocation As Range
   timeInterval = (TimeSerial(0, 0, 1)) / 1
   Set cellLocation = Range("A1")
   cellLocation.Value = (Val(cellLocation.Value) + 1) Mod 60
   Application.OnTime Now() + timeInterval, "knapp1_klikk"

End Sub

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...