Временной сценарий VBA для упражнений - PullRequest
2 голосов
/ 09 марта 2010

У меня есть таблица Excel с двумя столбцами, один со списком упражнений (33 из них) и количеством повторений для каждого. Что мне действительно нужно, так это программа, которая выбирает случайное упражнение, отображает его с количеством повторений и имеет кнопку с надписью «Готово?». Когда вы щелкаете по нему, я хочу таймер, который отсчитывает 20 минут, выбирает новое упражнение и ждет, пока вы не нажмете «Готово», и повторите.

Я знаю, что это не сложно, но я не программист. Если у кого-то есть учебник или другой способ сделать это (флэш?), Я был бы очень признателен.

Спасибо заранее, Джей

1 Ответ

2 голосов
/ 10 марта 2010

То, что вы просите, не слишком сложно, но не так легко объяснить, если вы не привыкли использовать пользовательские формы и т. Д.

Вместо этого я предложил более упрощенное решение, которое может удовлетворить ваши потребности. Для целей этого решения я предполагаю, что все ваши упражнения перечислены в столбце 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 минут. Если вы затем нажмете кнопку, вы можете начать все сначала со случайного упражнения.

Надеюсь, это поможет.

...