仕事術からプライベートの時間を創る







【VBA】ストップウォッチの作り方とコードを初心者向けに解説!

WRITER
 
VBAでストップウォッチの作り方のアイキャッチ画像
この記事を書いている人 - WRITER -
Excel歴15年。パソコン講座を数十回以上実施し、就職や転職、復職の支援も行っています。Excelの基本操作から関数、マクロ、VBAまで仕事で便利だったことを中心に書いていますので、お仕事の時間短縮にお役に立てれば幸いです。
詳しいプロフィールはこちら

Excelを使用していると、データ入力の訓練や課題の練習など、ストップウォッチ機能があったら便利・・・ということも多いでしょう。

実は私は普段パソコン講座なども行っていて、ワークにストップウォッチ機能があるととても便利と思うことがよくあります。

そこでこの記事ではExcelのストップウォッチ機能について、VBAのコードをコピペですぐに使えるよう、状況別に合わせてコードを作りました。

内容は画像付きで解説しますので、一つずつ見ていきましょう。

 

【基礎編】VBAを使ったストップウォッチ機能の挿入方法

ストップウォッチの動作確認画像

最初は簡単なコードとして、上の画像のようなストップウォッチを作ります。

 

まずは以下のようにExcelに文字を入力します。

ストップウォッチ機能の下準備画像

次に、Alt+11でVBAの入力画面を開き、標準モジュールを挿入します。

標準フォーム挿入画像

次に、以下のコードをコピペして貼り付けましょう。

 

ストップウォッチの基本コードの画像

ボタン挿入

ストップウォッチのボタン配置画像

マクロを動かしやすいように、ボタンを2つ挿入します。もしボタンの挿入方法が分からない場合はExcelでボタンを使ったマクロの簡単な作り方の記事を見てみましょう。

スタートにはStartTimerのマクロを登録し、ストップにはStopTimerのマクロを登録します。

実際にマクロを動かしてみると、以下のようになります。

ストップウォッチの動作確認画像

ストップウォッチのコードの意味を解説

■ Public StartTime As Date
すべてのモジュール(プログラムのまとまり)から使える、『StartTime』という名前の日付・時刻型の変数を宣言する」という意味

■ Sub StartTimer()
スタートボタンに割り当てるマクロです。

● StartTime = Now
Now は「現在の日時」を返す関数

これを StartTime に保存しておきます

ストップ時に差を取るための基準になります

● Range(“A4”).Value = StartTime
スタートした時刻を A4 に表示します

Excelのセルに時刻が記録されるので、ログとしても使えます

■ Sub StopTimer()
ストップボタンに割り当てるマクロです。

● Dim EndTime As Date
ストップした時刻を入れる変数を用意します

● EndTime = Now
ストップボタンを押した瞬間の時刻を取得します

● Range(“B4”).Value = EndTime
ストップ時刻を B4 に表示します

● Range(“C4”).Value = EndTime – StartTime
経過時間は「ストップ  – スタート」で求められます

Excelでは時刻は「1日=1」として扱われるため、差を取るだけでOK

● Range(“C4”).NumberFormat = “hh:mm:ss”
経過時間を「時:分:秒」で見やすく表示します

これを設定しないと、Excelの内部値(0.000123…のような小数)で表示されてしまいます。

 

日付を非表示にして秒を表示する方法

ストップウォッチの秒の表示形式を変更した完成図

上の画像のように、スタートとストップの日付を非表示にして秒を出す方法を紹介します。その場合、コードを以下に差し替えます。

 

このようになります。
ストップウォッチで秒の表示を示した画像

秒の表示をするコード解説

Range(“A4”).NumberFormat = “hh:mm:ss”のコードを入れることで、表示形式を設定することができます。hhは時、mmは分、ssは秒を指しています。

 

リセットボタンの設定

次はリセットボタンを設置する方法を紹介します。

以下のコードを追記しましょう。

 

ストップウォッチにリセットボタンを入れるコードの画像

コードの意味は以下となります。

■ Sub ResetTimer()
リセットボタンに割り当てるマクロです

「ストップウォッチの値を初期化する処理」をまとめています

■ Range(“A4:C4”).ClearContents
A4 から C4 までの範囲をまとめてクリア

ClearContents は「値だけ消す」命令
→ セルの書式(時刻表示など)は残る

そのため、再スタートしても時刻表示が崩れません

 

ストップウォッチのスタート直後に一度リセットする方法

次はストップウォッチのスタートを押したら自動でスタートの時間がリセットされるようにします。

以下のコードを追記します。

スタート時にストップウォッチをリセットする画像

ストップウォッチが続いているときの秒数をリアルタイム表示する方法

ストップウォッチの秒数がリアルタイムに進む

次は秒数をリアルタイムする方法を紹介します。

今度は最終的な完成のコードを紹介しますので、全てコードを差し替えましょう。

以下となります。

ストップウォッチのコード完成

ストップウォッチ完成版のコード解説

コードを解説します。
■ C4 は UpdateTimer でリアルタイム更新

上記は秒数が動き続けるというコードです。
 
■ Application.OnTime で1秒ごとに更新

Excel が固まらないように、
1秒後に再度 UpdateTimer を実行する予約を入れている。
 
■ StopTimer で更新を止める

これがないと、止めても UpdateTimer が動き続けてしまう。
 

この記事を書いている人 - WRITER -
Excel歴15年。パソコン講座を数十回以上実施し、就職や転職、復職の支援も行っています。Excelの基本操作から関数、マクロ、VBAまで仕事で便利だったことを中心に書いていますので、お仕事の時間短縮にお役に立てれば幸いです。
詳しいプロフィールはこちら









- Comments -

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Copyright© Excel仕事術ブログ , 2026 All Rights Reserved.