Avatar billede Benny Praktikant
28. februar 2021 - 10:53 Der er 14 kommentarer

Knap med makro

Halløj.
Jeg har et ark i excel, hvor jeg har lavet tre knapper, start - stop - og pause
når jeg så sætter arkbeskyttelse på kan knapperne ikke bruges, hvilket ikke er planen :-(
Altså et låst ark med aktive knapper ville være dejligt.
Jeg vil gerne gøre opmærksom på at jeg ikke er en ørn til det her så simpelt er kodeordet.
På forhånd tak
Avatar billede Jan K Ekspert
28. februar 2021 - 14:14 #1
Vlken version af Excel? Jeg har testet i 365 og her virker både Kontrolelementknapper og ActiveX knapper fint beskyttede ark, med mindre de skal "gøre noget ved" låste celler.
Avatar billede Benny Praktikant
01. marts 2021 - 10:27 #2
Jeg prøver igen og arbejder lidt med det, men de låser desværre hele tiden.
det er 365
Avatar billede Jan K Ekspert
01. marts 2021 - 21:53 #3
Hvad gør knapperme.
Avatar billede Benny Praktikant
03. marts 2021 - 10:40 #4
Så fik jeg hul igennem, har ikke luret hvad der er anderledes men nu virker det.
Tak for hjælpen.
Avatar billede Jan K Ekspert
03. marts 2021 - 17:10 #5
Velbkomme.
Avatar billede Benny Praktikant
08. marts 2021 - 12:19 #6
Halløj

Ja så er jeg tilbage, med et spørgsmål til de kloge folk her inde - som faktisk er til mere hjælp end jeg havde regnet med.

Jeg har nu fået lavet tostopure på samme ark, MEN, når jeg stopper det ene og lader det andet kører, og så starter det igen starter det på samme tid som det andet ur :-(, de skulle jo gerne kører hver for sig og evt hele tiden hvis det er det man skal, og sidst men ikke mindst, jeg vil gerne have begge urer til at "logge" deres tid og dato på et ark2, jeg har set det brugt på en video, men har ikke kunnet knække koden hvis man kan sige det sådan.

Som det pt ser ud nu er som følgende

Public StopIt As Boolean
Public ResetIt As Boolean
Public LastTime
Private Sub CommandButton1_Click()
Dim StartTime, FinishTime, TotalTime, PauseTime
StopIt = False
ResetIt = False
If Range("B8") = 0 Then
  StartTime = Timer
  PauseTime = 0
  LastTime = 0
Else
  StartTime = 0
  PauseTime = Timer
End If
StartIt:
  DoEvents
  If StopIt = True Then
    LastTime = TotalTime
    Exit Sub
  Else
    FinishTime = Timer
    TotalTime = FinishTime - StartTime + LastTime - PauseTime
    TTime = TotalTime * 100
    HM = TTime Mod 100
    TTime = TTime \ 100
    hh = TTime \ 3600
    TTime = TTime Mod 3600
    MM = TTime \ 60
    SS = TTime Mod 60
    Range("B8").Value = Format(hh, "00") & ":" & Format(MM, "00") & ":" & Format(SS, "00") & "." & Format(HM, "00")
    If ResetIt = True Then
      Range("B8") = Format(0, "00") & ":" & Format(0, "00") & ":" & Format(0, "00") & "." & Format(0, "00")
      LastTime = 0
      PauseTime = 0
      End
    End If
    GoTo StartIt
  End If
End Sub
Private Sub CommandButton2_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  StopIt = True
End Sub
Private Sub CommandButton3_Click()
  Range("B8").Value = Format(0, "00") & ":" & Format(0, "00") & ":" & Format(0, "00") & "." & Format(0, "00")
  LastTime = 0
  ResetIt = True
End Sub
Public StopIt As Boolean
Public ResetIt As Boolean
Public LastTime
Private Sub CommandButton4_Click()
Dim StartTime, FinishTime, TotalTime, PauseTime
StopIt = False
ResetIt = False
If Range("B12") = 0 Then
  StartTime = Timer
  PauseTime = 0
  LastTime = 0
Else
  StartTime = 0
  PauseTime = Timer
End If
StartIt:
  DoEvents
  If StopIt = True Then
    LastTime = TotalTime
    Exit Sub
  Else
    FinishTime = Timer
    TotalTime = FinishTime - StartTime + LastTime - PauseTime
    TTime = TotalTime * 100
    HM = TTime Mod 100
    TTime = TTime \ 100
    hh = TTime \ 3600
    TTime = TTime Mod 3600
    MM = TTime \ 60
    SS = TTime Mod 60
    Range("B12").Value = Format(hh, "00") & ":" & Format(MM, "00") & ":" & Format(SS, "00") & "." & Format(HM, "00")
    If ResetIt = True Then
      Range("B12") = Format(0, "00") & ":" & Format(0, "00") & ":" & Format(0, "00") & "." & Format(0, "00")
      LastTime = 0
      PauseTime = 0
      End
    End If
    GoTo StartIt
  End If
End Sub
Private Sub CommandButton5_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  StopIt = True
End Sub
Private Sub CommandButton6_Click()
  Range("B12").Value = Format(0, "00") & ":" & Format(0, "00") & ":" & Format(0, "00") & "." & Format(0, "00")
  LastTime = 0
  ResetIt = True
End Sub

på forhånd tak
Avatar billede store-morten Ekspert
09. marts 2021 - 00:22 #7
Jeg mener ikke du kan have to timere kørende samtidig.
Flot kode iøvrigt ;-)
Private a As Boolean

Private Sub CommandButton1_Click()
a = True
Do While a
Application.wait (Now + TimeValue("00:00:01"))
DoEvents
Range("B8") = Format(DateAdd("s", 1, Range("B8")), "hh:mm:ss")
Loop
End Sub

Private Sub CommandButton2_Click()
a = False
End Sub

Private Sub CommandButton3_Click()
Range("B8") = "00:00:00"
End Sub
Dog uden millisekunder.
Avatar billede Benny Praktikant
09. marts 2021 - 09:19 #8
Den virker fint,men, når jeg så skriver i et andet felt på arket stopper uret, og ja der er det med at der skal være to stopurer på samme side, og tiden skal logge på ark 2, i 2 "tidstabeller".
Hvis man har to motorer der kører, og man skal logge drift tider på dem, håber du forstår.
Tak for hjælpen
Avatar billede Jan K Ekspert
09. marts 2021 - 09:41 #9
Så vit jeg ved, kan ikke makro ikke afspilles, når der redigeres i en celle. Så når du begynder at skrive i en celle, vil makroen og dermed uret stoppe.
Avatar billede Benny Praktikant
09. marts 2021 - 09:51 #10
Hmmm, der må være da være en måde så man kan have et stop ur til at kører mens man laver noget andet i arket
Avatar billede Jan K Ekspert
09. marts 2021 - 10:08 #11
Sikkert, men i givet fald kender jeg den ikke.
Avatar billede Benny Praktikant
09. marts 2021 - 10:35 #12
Alt i orden, måske kender du en måde så man kan registrere sine tider på et andet ark, jeg må jo se om jeg kan finde på noget andet end have to urer
Avatar billede store-morten Ekspert
09. marts 2021 - 11:29 #13
Måske med en log på Ark1?

CommandButton1_Click = Start
CommandButton2_Click = Stop

Tast overskrifter i:
B9: Dato
C9: Start
D9: Stop
E9: Kørselstid
Private Sub CommandButton1_Click()
If Not IsEmpty(Sheets("Ark1").Range("D65536").End(xlUp).Offset(1, -1)) Then Exit Sub
Sheets("Ark1").Range("C65536").End(xlUp).Offset(1, -1) = Date
Sheets("Ark1").Range("C65536").End(xlUp).Offset(1, 0) = Time
End Sub

Private Sub CommandButton2_Click()
If IsEmpty(Sheets("Ark1").Range("D65536").End(xlUp).Offset(1, -1)) Then Exit Sub
Sheets("Ark1").Range("D65536").End(xlUp).Offset(1, 0) = Time
Sheets("Ark1").Range("D65536").End(xlUp).Offset(0, 1).FormulaR1C1 = "=RC[-1]-RC[-2]"
End Sub
Avatar billede Benny Praktikant
09. marts 2021 - 12:57 #14
Se nu er vi ved at være inde på noget af det rigtige, tusinde tak, så må jeg se om jeg ikke kan få det sidste lagt sammen med. Tusinde tak for hjælpen
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

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