Excelで1秒ごとにカウントアップする時計を作る

Office Excel

NOW関数を使って自動更新することで実装することができれば楽なのですが、現段階ではそのような機能はありません。マクロを利用して実装していきます。

コピペできるようにしてありますので安心して進めてください。

前準備

左上の「ファイル」をクリック → オプション → リボンのユーザー設定 → 開発のチェックボックスにチェックを入れる。

これにより、上の部分に「開発」という項目が追加されます。

マクロの実装

追加した開発タブから、Visual Basic → 挿入 → 標準モジュールをクリック

表示された記述欄に下記をコピペしましょう。

Dim Time As Boolean
Sub Start()
    Time = True
    MoveTime
End Sub
Sub MoveTime()
    If Time = False Then End
    Range("A1") = Format(Now, "hh:mm:ss")
    Application.OnTime Now + TimeValue("00:00:01"), "MoveTime"
End Sub
Sub StopTime()
    Time = False
End Sub

【蛇足】プログラムの簡単な解説

読み飛ばしていただいて構いません。

ただ、長期的に見た時に知っておくと役立つ時が来るでしょう。

Dim Time As Boolean

Timeという名前の変数を使いますよという宣言です。

Sub Start()
    Time = True
    MoveTime
End Sub

Startという名前の塊ですよという宣言

Timeという変数を有効にします。

MoveTimeという名前の塊を起動します。(この次で紹介)

ここまでがStartという塊ですよという宣言

Sub MoveTime()
    If Time = False Then End
    Range("A1") = Format(Now, "hh:mm:ss")
    Application.OnTime Now + TimeValue("00:00:01"), "MoveTime"
End Sub

MoveTimeという名前の塊ですよという宣言

もし、Timeという変数が無効になったら動作を終了します。

A1セルに次のことを記述します「現在の、時・分・秒」

今の時間に1秒を足して、MoveTimeの塊をはじめからもう一度動作させます。

ここまでがMoveTimeという塊ですよという宣言

Sub StopTime()
    Time = False
End Sub

StopTimeという名前の塊ですよという宣言

Timeという変数を無効にします。

ここまでがStopTimeという塊ですよという宣言

時計を動き出させる

Excelのブックに戻り、開発タブにある挿入 → 左上のボタンをクリック

その後、ドラッグしてボタンを作成します。

すると、マクロの登録画面が出てくるので、Startを選択してOKを押します。

その後、ボタンの名前をStartにしておきます。

同様のやり方でStopのボタンも作成します。こちらはマクロの登録でStopTimeを選択しましょう。

名前の変更まで完了したら適当なセルをクリックするとボタンとしてその場に設置されます。

ボタンの名前や大きさ、場所などを変えたいときにはボタンを右クリックします。

【余談】ボタンを押すのにパスワードが必要にする

スタートボタンは誰でも押せて、ストップボタンはパスワードを入力しないと押せないように変更してみます。

プログラムを下記のように変更します。変更されたのは12行目~16行目です。

Dim Time As Boolean
Sub Start()
    Time = True
    MoveTime
End Sub
Sub MoveTime()
    If Time = False Then End
    Range("勤怠登録!B1") = Format(Now, "hh:mm:ss")
    Application.OnTime Now + TimeValue("00:00:01"), "MoveTime"
End Sub
Sub StopTime()
    If InputBox("パスワードを入力してください") = "Pass" Then
    Else
    MsgBox "パスワードが違います"
    Exit Sub
    End If
    Time = False
End Sub

変更部分の解説

    If InputBox("パスワードを入力してください") = "Pass" Then
    Else
    MsgBox "パスワードが違います"
    Exit Sub
    End If

条件を求める塊を作ると宣言し、パスワードの入力画面を表示する。パスワードは「Pass」とする

もしパスワードが間違っていた場合

違うと伝えるメッセージボックスを表示する

あっていたらそれ以降のプログラムを実行する

条件を求める塊はここまでと宣言する

まとめ

マクロを理解できればプログラミングも学習のハードルが下がるでしょう。

ぜひ知っておきたい一つです。

コメント

タイトルとURLをコピーしました