終了時に音が鳴り、フォームだけが表示されるポモドーロタイマーを作成します。以下の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. 各ポモドーロの終了時と休憩終了時に音が鳴ります。



これで、終了時に音が鳴り、フォームからタイマーを操作できるポモドーロタイマーが完成します。