Je suis un noob complet à la fois Excel et Vba et j'essaie de trouver un code qui peut me donner une minuterie et un changement de couleur de cellule qui se produit lorsque je clique sur mes trois boutons StartBtn, StopBtn et ResetBtn. À l'heure actuelle, j'ai eu le code pour fonctionner pour une seule cellule B3 mais j'ai besoin des boutons pour fonctionner pour n'importe quelle cellule sur la feuille sur laquelle on clique. Je collage le code ci-dessous et j'espère que vous seriez assez gentil pour passer par le code et enregistrer ce noob confus.
Code:
Dim StopTimer As Boolean Dim SchdTime As Date Dim Etime As Date Const OneSec As Date = 1 / 86400# Private Sub StartBtn_Click() Range("B3").Interior.ColorIndex = 6 StopTimer = False SchdTime = Now() [B3].Value = Format(Etime, "hh:mm:ss") Application.OnTime SchdTime + OneSec, "Sheet1.NextTick" End Sub Private Sub ResetBtn_Click() Range("B3").Interior.ColorIndex = -4142 StopTimer = True Etime = 0 [B3].Value = "00:00:00" End Sub Private Sub StopBtn_Click() Range("B3").Interior.ColorIndex = 4 StopTimer = True Beep End Sub Sub NextTick() If StopTimer Then 'Don't reschedule update Else [B3].Value = Format(Etime, "hh:mm:ss") SchdTime = SchdTime + OneSec Application.OnTime SchdTime, "Sheet1.NextTick" Etime = Etime + OneSec End If End Sub
En excel, vous pouvez utiliser la propriété de sélection pour traiter ce qui est sélectionné ou actif dans votre feuille de calcul.
Notez cependant que cela peut causer des problèmes plus loin sur le chemin car le code devient plus complexe et l'utilisation de la selection
n'est habituellement pas la meilleure méthode.
Plutôt que d'utiliser la Selection
dans tout votre code, je vous suggère d'utiliser la Selection
pour identifier la cellule actuellement sélectionnée lorsque vous StartBtn
votre StartBtn
, enregistrez cet emplacement et utilisez-le dans les autres routines; par exemple,
Dim StopTimer comme booléen Dim SchdTime As Date Dim Etime Date Dim SavedLoc As Variant 'Here Const OneSec As Date = 1/86400 # Private Sub StartBtn_Click () Si Selection.Count <> 1 Then MsgBox "Sélectionnez une seule cellule". Exit Sub Fin si SavedLoc = Selection.Address 'Here Range (SavedLoc) .Interior.ColorIndex = 6 'Ici StopTimer = False SchdTime = maintenant () Range (SavedLoc) .Value = Format (Etime, "hh: mm: ss") 'Ici Application.OnTime SchdTime + OneSec, "NextTick" End Sub Private Sub ResetBtn_Click () Range (SavedLoc) .Interior.ColorIndex = -4142 'Ici StopTimer = True Etime = 0 Range (SavedLoc) .Value = "00:00:00" 'Ici SavedLoc = nul 'Here End Sub Private Sub StopBtn_Click () Range (SavedLoc) .Interior.ColorIndex = 4 'Ici StopTimer = True SavedLoc = nul 'Here Bip End Sub Sub NextTick () Si StopTimer puis 'Ne modifiez pas la mise à jour Autre Range (SavedLoc) .Value = Format (Etime, "hh: mm: ss") 'Ici SchdTime = SchdTime + OneSec Application.OnTime SchdTime, "NextTick" Etime = Etime + OneSec Fin si End Sub
Si vous souhaitez exécuter simultanément des temporisations dans plusieurs cellules, cela devient beaucoup plus compliqué, et vous devriez vous référer aux commentaires sur votre autre question .