2010-03-09 64 views
2

我有一個excel電子表格,有兩列,一列有練習列表(其中33個)和每個列表的數量。我真正想要的是一個程序,選擇一個隨機練習,用它的代表數顯示它,並且有一個按鈕表示「完成?」。當你點擊它時,我需要一個倒計時20分鐘的計時器,選擇一個新的練習並等待,直到你點擊完成,然後重複。基於時間的練習VBA腳本

我知道這不難,但我不是任何程序員。如果任何人有教程或其他方式做這個(閃光?),我會非常感激。

由於提前, 周杰倫

回答

2

你所要求的是不是太困難,但不是那麼容易解釋,如果你不習慣使用用戶窗體等

相反,我想出了一個更簡單的解決方案,可以滿足您的需求。爲了解決這個問題,我假定所有的練習都列在列A中,列在列B中。以下代碼將隨機選擇一個練習,突出顯示所選擇的選項,然後在列C中顯示從20分鐘到0,間隔1分鐘。作爲一個可視化:

 A    B   C 
1  Bench press 20 reps 
2  Abs   10 reps  
3  Lateral raise 15 reps  14 mins <-display of minutes remaining 
4  Bicep curl  8 reps 
5  Calf raise  10 reps 
6  etc 

要做到這一點,首先添加下面的代碼模塊(ALT + F11,然後插入>模塊

Sub StartExercise() 
'Get number of exercises 
Dim NumberOfExercises As Integer 
NumberOfExercises = Range("A1").End(xlDown).Row - 1 

'Reset font to normal black and clear anything in column C 
Range("A1:B" & NumberOfExercises + 1).Font.Bold = False 
Range("A" & NumberOfExercises + 1 & ":" & "B" & NumberOfExercises + 1).Font.ColorIndex = 1 
Range("C1:C" & NumberOfExercises + 1).Clear 

'Select a random exercise 
Dim RandomExercise As Integer 
RandomExercise = Int(Rnd() * (NumberOfExercises - 1 + 1) + 1) 

'Highlight selected exercise and reps 
Range("A" & RandomExercise + 1 & ":" & "B" & RandomExercise + 1).Font.Bold = True 
Range("A" & RandomExercise + 1 & ":" & "B" & RandomExercise + 1).Font.ColorIndex = 3 

'Countdown from 20 minutes to 0 
SetCountDown RandomExercise 

End Sub 

Sub SetCountDown(TargetCellRow As Integer) 

Dim MinsRemaining As Integer 
Dim iMins As Integer 
MinsRemaining = 20 

For iMins = MinsRemaining To 0 Step -1 
    Range("C" & TargetCellRow + 1).Value = iMins & " mins" 
    Application.Wait (Now + TimeValue("0:01:00")) 
Next iMins 

End Sub 

最後,在您的電子表格你將需要一種啓動代碼的方式。

選擇查看>工具>表格然後從菜單中點擊Button並在電子表格的任意位置繪製它。在指定宏對話框中,您應該看到「StartExercise」作爲選項。選擇此選項並單擊確定。

現在,當你點擊你的按鈕時,你應該看到一個練習和一些代表將以粗體,紅色字體突出顯示,'20分鐘'出現在旁邊。然後這將倒計數到0分鐘。如果你再點擊按鈕,你可以從頭開始重複隨機練習。

希望這會有所幫助。

+0

這個岩石!這讓我想要鍛鍊更多! :) – 2010-03-10 20:34:37

+0

謝謝!它完美的工作! – Jeremy 2010-03-11 05:11:57

+0

好消息 - 很高興它解決了,你可以在健身房裏忙碌起來!還有一件事,如果解決方案適合您,那麼在本網站上點擊'打勾'標記接受答案將被視爲禮貌。這樣,其他幫助者可以看到該解決方案已被接受,並且不需要進一步的幫助 – 2010-03-11 08:15:26