教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA プログラミング】(関数21)Timer関数のプログラミング例を教えて!

f:id:m_kbou:20201001100346p:plain

Timer関数を使用したプログラミング例を紹介します。

 

 

例題

<実行>ボタンをクリックした場合、コピー元(C列)に登録されているデータをコピー先(A列)に貼り付けし、転記に掛かった時間を表示します。

[実行前]:

C列に1~100000の数字が入力されています。(※C列には10万件のデータが登録されています。)

f:id:m_kbou:20201001100402p:plain

[実行後]:

C列データをA列に貼り付けし、掛かった時間を表示します。今回は転記に55秒掛かったため、「55秒」が表示されました。

f:id:m_kbou:20220124075039p:plain

 

プログラミング

プログラミングは以下の通りとなります。

[記述例]:

Sub サンプル()

  '↓処理①
  Dim 行 As Long
  Dim 開始時間 As Long
  Dim 終了時間 As Long

  '↓処理②
  Range("A2:A100001").ClearContents

  '↓処理③
  開始時間 = Timer

  '↓処理④
  For 行 = 2 To 100001
    Cells(行, "A") = Cells(行, "C")
  Next

  '↓処理⑤
  終了時間 = Timer

  '↓処理⑥
  MsgBox (終了時間 - 開始時間) & "秒"

End Sub

処理①:変数定義
変数を定義します。

処理②:コピー先欄クリア
A列の2行目~100001行目までをクリアします。

処理③:開始時刻取得
変数:開始時間に開始時刻(現在の時刻)をセットします。開始時刻はTimer関数を使用して取得します。

処理④:コピー元データをコピー先にセット
For~Next文を使用した2行目~100001行目までのコピー元データ(C列)をコピー先(A列)にセットします。

処理⑤:終了時刻取得
変数:終了時間に終了時刻(現在の時刻)をセットします。終了時刻はTimer関数を使用して取得します。

処理⑥:経過時間の表示
上記処理③と処理⑤で取得した時刻の差分をMsgBoxで表示します。

との内容になります。

f:id:m_kbou:20220124074804p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。また、ボタンにプログラムを割り当てるにはこちらを参考にして下さい。

 

ダウンロード

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com