Excelでデジタル時計を作成する方法:VBAと数式を使った2つの簡単なテクニック
Excelは表計算ソフトとしてだけでなく、VBAマクロや図形ツールを組み合わせることで、デジタル時計のような動的なツールも作成できます。この記事では、初心者でも再現できる2つの方法を、手順ごとにわかりやすく解説します。
方法1:Excel VBAとTEXT関数でデジタル時計を作る
まずは、セルの値をTEXT関数で整形し、VBAで現在時刻を更新していくシンプルな方法です。
ステップ1:図形を挿入する
- リボンの[挿入]タブから [図] > [図形] の順にクリックします。

- [図形] のメニューが表示されるので、[角丸四角形] を選択します。

- ワークシート上に角丸四角形が挿入されます。これが時計の表示エリアになります。

ステップ2:VBAコードを入力する
- [開発] タブを開き、[Visual Basic] をクリックします(開発タブが表示されていない場合は、[ファイル] > [オプション] > [リボンのユーザー設定] から有効化してください)。

- VBE(Visual Basic Editor)が開いたら、[挿入] メニューから [標準モジュール] を選択し、モジュールウィンドウを作成します。

- モジュールに以下のVBAコードを入力します。
Sub Digi_Clock()
Range("B5") = Not Range("B5")
Do While Range("B5") = True
DoEvents
Range("B6") = Now()
Loop
End Sub
- 緑色の [実行] ボタン(▶)を押してマクロを実行します。

- セル B4 に TRUE と入力し、Enter キーまたは Tab キーを押します。これにより、B6セルに現在時刻が随時書き込まれるようになります。

ステップ3:マクロを図形に割り当てる
- 挿入した角丸四角形を右クリックします。
- ショートカットメニューから [マクロの登録] を選択し、先ほどのコードを図形に関連付けます。

- これで、図形をクリックするだけでVBAマクロが実行され、時刻が表示される仕組みになります。

ステップ4:TEXT関数で時刻を見やすく整える
- セル C6 に以下のTEXT関数を入力します。
=TEXT(B6,"hh:mm:ss AM/PM")
- この関数は、B6セルの時刻値を「hh:mm:ss」形式の文字列に変換して返します。
Enterキーを押すと、デジタル表示用の時刻文字列が生成されます。 - [ホーム] タブの [フォント] グループから、フォントの色・サイズ・スタイルをお好みに調整しましょう。等幅フォントを使うと数字が揃って見やすくなります。

- 以上で、時刻がデジタル形式で表示される時計が完成です。

関連記事: Excelで動く時計を作る方法
方法2:図形ツールとExcel VBAで本格的なデジタル時計をデザインする
次に、7セグメント風の図形を組み合わせて、より本格的な見た目のデジタル時計を作成する方法を紹介します。
ステップ1:時計のデザインを作る
- [挿入] > [図] > [図形] の順にクリックします。

- 図形メニューの中から [ブロック矢印] グループにある [五角形矢印] を選択します。ワークシートに五角形矢印が挿入されます。

- コピー&ペーストでもう1つの矢印を挿入します。
- 新しく挿入した矢印を選択し、[図形の書式] > [回転] から [左右に反転] を実行します。

- 矢印をコピーしながら配置し、円状の形を組み立てていきます。必要に応じて [回転] オプションを活用してください。

- すべての矢印を並べ替えて、数字の「8」の形(7セグメント表示)を作ります。
- 1桁目のセグメントが完成したら、各矢印グループを右クリックして名前を付け、1 から順番に番号を振っていきます。

- 完成したグループ全体をコピー&ペーストして、「hh:mm:ss」形式の6桁分の表示を作成します。
- すべての図形に 1 ~ 42 の名前を付けてください。
- さらに、楕円 形を4つ追加して「Point」という名前を付けます(時・分・秒の間のコロンの点滅用です)。
- 最後に、角丸四角形 を3つ追加し、[Start](開始)、[Stop](停止)、[Reset](リセット) の3つのコマンドボタンを作ります。

- これで時計の表示部分のデザインが完成しました。次に、このデザインにVBAコードを組み込んでいきます。
ステップ2:Excel VBAコードを挿入する
- Alt + F11 キーを押してVisual Basic Editorを開きます。
- 以下のVBAコードを追加します。これは、各桁の数字に応じてセグメント(矢印)の表示・非表示を切り替えるメインのプロシージャです。
Sub Digital_Clock_Autoshapes(FS As Integer, Digi As Integer)
Dim n As Integer
Dim Spe As Shape
Dim Shw As Worksheet
Set Shw = ActiveSheet
Dim i As Integer
For i = FS To FS + 6
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
Spe.Visible = msoCTrue
Next i
If Digi = 0 Then
For i = FS To FS + 6
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
If i = FS + 2 Then
Spe.Visible = msoFalse
End If
Next i
End If
If Digi = 1 Then
For i = FS To FS + 6
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
If i <> FS + 1 And i <> FS + 5 Then
Spe.Visible = msoFalse
End If
Next i
End If
If Digi = 2 Then
For i = FS To FS + 6
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
If i = FS + 3 Or i = FS + 5 Then
Spe.Visible = msoFalse
End If
Next i
End If
If Digi = 3 Then
For i = FS To FS + 6
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
If i = FS + 3 Or i = FS + 4 Then
Spe.Visible = msoFalse
End If
Next i
End If
If Digi = 4 Then
For i = FS To FS + 6
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
If i = FS Or i = FS + 4 Or i = FS + 6 Then
Spe.Visible = msoFalse
End If
Next i
End If
If Digi = 5 Then
For i = FS To FS + 6
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
If i = FS + 1 Or i = FS + 4 Then
Spe.Visible = msoFalse
End If
Next i
End If
If Digi = 6 Then
For i = FS To FS + 6
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
If i = FS + 1 Then
Spe.Visible = msoFalse
End If
Next i
End If
If Digi = 7 Then
For i = FS To FS + 6
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
If i = FS + 3 Or i = FS + 2 Or i = FS + 4 Or i = FS + 6 Then
Spe.Visible = msoFalse
End If
Next i
End If
If Digi = 9 Then
For i = FS To FS + 6
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
If i = FS + 4 Then
Spe.Visible = msoFalse
End If
Next i
End If
End Sub
- エディターを閉じて、作業中のブックに戻ります。

- 続けて、以下の3つのプロシージャを追加します。
- まずは [Start](開始) ボタン用のコードです。時刻を取得して各セグメントに反映させ、秒が偶数のときだけコロンの点を点灯させる処理も含まれています。
Sub Start_Clock()
Dim Shw As Worksheet
Set Shw = ActiveSheet
Shw.Range("B5").Value = ""
x:
If Shw.Range("B5").Value = "Stop" Then Exit Sub
VBA.DoEvents
Call Digital_Clock_Autoshapes(1, VBA.CInt(VBA.Left(VBA.Format(Time, "HH"), 1)))
Call Digital_Clock_Autoshapes(8, VBA.CInt(VBA.Right(VBA.Format(Time, "HH"), 1)))
Call Digital_Clock_Autoshapes(15, VBA.CInt(VBA.Mid(VBA.Format(Time, "HHMM"), 3, 1)))
Call Digital_Clock_Autoshapes(22, VBA.CInt(VBA.Right(VBA.Format(Time, "HHMM"), 1)))
Call Digital_Clock_Autoshapes(29, VBA.CInt(VBA.Left(VBA.Format(Time, "SS"), 1)))
Call Digital_Clock_Autoshapes(36, VBA.CInt(VBA.Right(VBA.Format(Time, "SS"), 1)))
Dim Spe As Shape
Set Spe = Shw.Shapes("Point")
If Application.WorksheetFunction.IsEven(VBA.Second(VBA.Now)) Then
Spe.Visible = msoCTrue
Else
Spe.Visible = msoFalse
End If
GoTo x
End Sub
- 次に、[Stop](停止) コマンド用のコードを追加します。
Sub Stop_Clock()
Dim Shw As Worksheet
Set Shw = ActiveSheet
Shw.Range("B5").Value = "Stop"
End Sub
- 最後に、[Reset](リセット) コマンド用のVBAコードを追加します。すべてのセグメントとコロンの点を再表示させます。
Sub Reset_Clock()
Dim n As Integer
Dim Spe As Shape
Dim Shw As Worksheet
Set Shw = ActiveSheet
Dim i As Integer
For i = 1 To 42
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
Spe.Visible = msoCTrue
Next i
Set Spe = Shw.Shapes("Point")
Spe.Visible = msoCTrue
End Sub
ステップ3:マクロをボタンに割り当てる
- [Start] ボタンの図形を右クリックし、[マクロの登録] を選択します。

- [Start] ボタンには Start_Clock マクロを割り当てます。
- 同様に、[Reset] には Reset_Clock、[Stop] には Stop_Clock をそれぞれ割り当てます。
- [OK] をクリックして設定を完了します。

- これで、操作ボタン付きのデジタル時計が完成しました。[Start] をクリックすると時計が動き始めます。

関連記事: Excelでアナログ時計を作成する方法
まとめ
この記事では、Excelでデジタル時計を作成する2つの方法を紹介しました。
- 方法1:VBAとTEXT関数を組み合わせたシンプルな方法。短時間で作れて、セルベースの表示なのでカスタマイズも容易です。
- 方法2:図形ツールで7セグメント風のデザインを作り、VBAで制御する本格的な方法。Start・Stop・Resetボタンも備えた、見栄えの良い時計が作れます。
VBAの学習やExcelの可能性を探る題材として、ぜひ両方の方法に挑戦してみてください。
関連記事
- Excelで時計グラフを作る方法
- Excelでデジタル時計を作るためのVBAコードの使い方
-
CSVファイルをExcelに変換する4つの方法|初心者でもできるステップバイステップ解説
本記事では、CSVファイルをExcel形式(.xlsx)に変換するさまざまな方法を、わかりやすい手順付きでご紹介します。CSV(カンマ区切り値)はテキストファイルの一種で、カンマが区切り文字となって各値を分離している、非常に便利で広く使われているファイル形式です。データの集計や計算などを行うために、CSVファイルをExcelドキュメントへ変換したい場面はよくあります。 CSVファイルはExcelやXMLなどの他のファイル形式と比べてファイルサイズが小さいのが特徴です。プレーンテキストとしてデータを保存し、複雑な書式情報を含まないため、ファイルサイズが抑えられます。そのため、特に大規模なデータセ
-
「組織でこのデバイスが無効になっています」Microsoft Teams エラー135011の原因と解決方法
MicrosoftがTeamsへの移行を推進する中で、アプリの利用中に発生するさまざまなエラーがその妨げとなっています。ユーザーからは、Microsoft 365アプリにサインインまたはアクティブ化しようとした際に、次のようなメッセージが表示されるという報告が寄せられています。 「組織でこのデバイスが無効になっています。この問題を解決するには、システム管理者に連絡し、エラーコード135011をお伝えください。」 この記事では、Microsoft Teamsのエラーコード135011の原因と具体的な解決方法を詳しく解説します。 Microsoft Teams エラー135011とは? Micro