終了時に音が鳴り、フォームだけが表示されるポモドーロタイマーを作成します。以下のVBAコードでは、フォームにスタートボタンがあり、タイマー終了時に音を鳴らします。
手順
1. Excelを開き、Alt + F11でVBAエディタを開きます。
2. Insert > UserFormを選択し、フォームを作成します。
3. UserFormに「Start」ボタン(CommandButton)を1つ配置します。
4. 次にモジュールを追加し、以下のコードを貼り付けます。
フォームコード
まず、UserFormのコード(例: UserForm1)に、スタートボタンのクリックイベントを追加します。
Private Sub CommandButton1_Click()
StartPomodoro
End Sub
モジュールコード
次に、メインのタイマー処理と音の再生部分を以下のモジュールに追加します。
Option Explicit
Sub StartPomodoro()
Dim startTime As Double
Dim duration As Double
Dim breakTime As Double
Dim pomodoroCount As Integer
Dim totalPomodoros As Integer
Dim soundPath As String
' 設定:25分勉強、5分休憩、4セット
duration = 25 * 60 ' 25分を秒に変換
breakTime = 5 * 60 ' 5分を秒に変換
totalPomodoros = 4 ' ポモドーロのセット数
soundPath = "C:\Windows\Media\notify.wav" ' 音ファイルのパス
' ポモドーロループ開始
For pomodoroCount = 1 To totalPomodoros
' 勉強タイマー
startTime = Timer
Do While Timer < startTime + duration
DoEvents ' 他の処理を行えるようにする
Loop
BeepSound soundPath
MsgBox "25分経過!休憩時間です。"
' 休憩タイマー
startTime = Timer
Do While Timer < startTime + breakTime
DoEvents ' 他の処理を行えるようにする
Loop
BeepSound soundPath
MsgBox "5分休憩終了!次のポモドーロに移りましょう。"
Next pomodoroCount
BeepSound soundPath
MsgBox "全てのポモドーロセットが完了しました!お疲れ様でした。"
End Sub
' WAVファイルを再生するサブプロシージャ
Sub BeepSound(soundPath As String)
Dim snd As String
snd = soundPath
Call sndPlaySound(snd, 1)
End Sub
' WAVファイルを再生するAPI
Declare PtrSafe Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _
(ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
説明
1. 音の再生: BeepSoundサブプロシージャを使用して、タイマー終了時にWAVファイルを再生します。ファイルパスは "C:\Windows\Media\notify.wav" としていますが、任意のWAVファイルを指定できます。
2. フォーム表示: フォームにスタートボタンを配置して、ボタンを押すとポモドーロタイマーがスタートします。
3. sndPlaySound API: Windowsのサウンド機能を使って、指定された音を再生します。
使用方法
1. フォーム(UserForm1)を表示し、スタートボタンを押すとタイマーが開始します。
2. 各ポモドーロの終了時と休憩終了時に音が鳴ります。
これで、終了時に音が鳴り、フォームからタイマーを操作できるポモドーロタイマーが完成します。