2017-11-16 1 views
0

mein VBA-Code stoppt, wenn ich eine andere VBA ausführen. i create count timer mit 3 Tasten, Start, Stopp, Reset und Anzeige der aktuellen Uhrzeit (Alle VBA) Ich brauche 15 Spalten mit dieser Wiederholung. Das Problem beginnt, wenn ich Button1 (Start Count-Zeit) oder eine andere (nicht egal) andere andere Codes (aktuelle Zeit und Start, Stopp, Reset-Tasten der Zählzeit) funktioniert nur Schaltfläche, die ich nach dem Ausführen Code zuerst klickt. Wie kann ich mehrere VBA-Code ausführen, die alle zusammen arbeiteten und sich nicht gegenseitig stören. Entschuldigung für mein Englisch. enter image description here Mein VBA für Start, Stopp, Reset.Excel mehrere VBA in verschiedenen Zellen und Blätter laufen

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("C2") = 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("C2").Value = Format(hh, "00") & ":" & Format(MM, "00") & ":" & Format(SS, "00") & "." & Format(HM, "00") 
    If ResetIt = True Then 
     Range("C2") = 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("C2").Value = Format(0, "00") & ":" & Format(0, "00") & ":" & Format(0, "00") & "." & Format(0, "00") 
    LastTime = 0 
    ResetIt = True 
End Sub 

Es ist:

Antwort

0

hier ist ein einfacher Demo-Code, der eine Hauptschleife und Dienste-Taste drückt läuft, ohne dass die Hauptschleife zu stoppen (es dauert immer noch weg von Hauptschleife obwohl)

Sie müssen Code hinzufügen, um andere Funktionen auszuführen

beschleunigen Sie den Code, indem Sie Zellformeln tun alle Berechnungen

auf einem Arbeitsblatt platzieren 1-Taste und drei Toggle-Tasten

diesen Code in Arbeitsblatt setzen auch

Option Explicit 


Dim doFive As Boolean 
Dim doSix As Boolean 
Dim doSeven As Boolean 


Private Sub CommandButton1_Click()  ' could be started other ways 

    doFive = ToggleButton1    ' this one affects cell G5 
    doSix = ToggleButton2    ' G6 
    doSeven = ToggleButton3    ' G7 

    While True       ' main demo service loop 

     DoEvents      ' this allows other events to be serviced (like button presses) 

     If doFive Then Range("g5") = Range("g5") + 1 
     If doSix Then Range("g6") = Range("g6") + 1 
     If ToggleButton3 Then Range("g7") = Range("g7") + 1 
    Wend 

End Sub 

Private Sub ToggleButton1_Click() 

    doFive = ToggleButton1 

End Sub 

Private Sub ToggleButton2_Click() 

    doSix = ToggleButton2 

End Sub 
+0

Thank you so much. Das hat mir sehr geholfen. –

Verwandte Themen