サイトアイコン 独学エクセル塾

【マクロVBA】Second関数で対象・現在時刻の秒を取得・抽出する方法と、抽出できない原因と対処法

マクロVBAの機能にはSecond関数という、時刻の秒のデータを取得する関数があります。
例えば「14:25:23」であれば「23」を出力するといった内容です。

今回はそのSecond関数についての使用方法と実際の活用事例について紹介します。
さらには現在の秒を出力する方法も説明したいと思います。

Second関数を使用する上で抽出・取得できないなど、不具合の原因・エラーの対応についてもまとめてますので是非参考にしてみてください。

それでは見ていきましょう。




⬛︎こんなことができるようになる!

・対象セル・変数内の時刻データから秒を取得することができる
・現在の時刻の秒を取得することができる

⬛︎関数の仕組み

変数・出力先=Second(対象となるデータ)

⬛︎Second関数の使用方法

ではここから実際にSecond関数の使用方法について紹介します。

・対象セルまたは変数の時刻データから秒を取得する

まずは対象セル・変数から秒を取得する方法を見ていきましょう。
見本で下図のようなシートを用意しました。

B3に日時データの「12:45:32」という時刻データが入っています。
こちらの時刻データから秒をD3に出力してみましょう

関数の仕組みは以下の通りです。
変数・出力先=Second(対象となるデータ)

ではこちらの構文に当てはめていきたいと思います。
変数・出力先はD3に出力するので「Cells(3, 4) 」となります。
対象データはB3の日時データを参照するので「B3」ですね。

実際に作成したプログラムはこちらです。

Sub 時刻の秒を出力()

Cells(3, 4) = Second(Cells(3, 2))

End Sub

では実行してみましょう。
結果はこのようになります。

B3の「12:45:32」から秒を取得すると「32」となり
その結果を「D3」に出力することができました。

先ほど説明した方法は直接、別のセルに出力する方法でしたが
変数へ格納することも可能です。

ではB3の日時から秒を抜き出し、メッセージボックスで表示させてみましょう。
今回のB3の時刻を「21:19:45」にしてみましょう。]

変数は何でも良いのですが変数「N」に格納したいと思います。

プログラムはこのようになります。

Sub 時刻の秒の出力()

Dim N As Long

N = Second(Cells(3, 2))

MsgBox “対象の時刻は” & N & “秒です”

End Sub

実行した結果はこちらです。

取得した秒をメッセージボックスで表示することができました。

・現在の秒を取得する

先ほどまではセルに入力してあった時刻データから秒を取得しましたが、
現在の日時からも取得することができます。

使用するのは「Now」です。
文字通り今という意味を持ちます。

使用方法は簡単で「Second(対象となるデータ)」の対象となるデータを「Now」に変えるだけです。
では見本で現在の日を変数Nに格納してメッセージボックスで出力してみましょう。

プログラムはこのようになります。

Sub 現在の時刻の秒の出力()

Dim N As Long

N = Second(Now)

MsgBox “現在の時刻は” & N & “秒です”

End Sub

実行した結果はこのようになります。

実行した際の時刻は23秒なので「23」をメッセージで表示させることができました。
もちろん、セルへの出力も可能です。

今回はB3に現在の秒を出力してみましょう。
プログラムはこのようになります。

Sub 現在の時刻の秒をセルに出力()

Cells(3, 2) = Second(Now)

End Sub

実行した結果はこのようになります。

B3に「40」が出力されました。
使用方法はシンプルなのでぜひ活用してみてください。

⬛︎時刻の秒のデータを取得できないときの対処法とよくあるエラーについて

・時刻の秒のデータを取得できない

こちらは変数名にSecondなど使用していないか確認してみてください。
私自身も変数名は誰でもわかるように英語に直訳した単語を変数として使用してました。
なのでSecond関数を知る前までは時のデータを「Second」という変数に格納していました。

しかしこれでは関数と変数が重複してしまい、機能しなくなります。

実際にプログラムを用意しました。

Sub エラーの出る現在の秒の出力()

Dim Second

Second = Second(Now)

MsgBox “現在の時刻の秒は” & N & “秒です”

End Sub

現在の秒を「Second」という変数に格納するプログラムですが
実行するとエラーになります。

つまり変数名を「Seconddata」など「Second」にならないようにしてみてください。

・適切な結果が出力されない

こちらは変数に時刻の秒を格納する際に
変数の形式がDateになっている可能性があります。

日時データで「Date」の変数の形式を指定するのは正解ですが
Second関数での出力結果は数値なので「Date」では日時データに変換されてしまいます。

なので「Long」などの整数形式が好ましいです。

⬛︎公式の説明

わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟

Second 関数 (microsoft.com)

⬛︎まとめ

いかがだったでしょうか。
日時データと合わせて管理している場合などに
Second関数で秒を出力したり、絞り込みを行ったり、用途は様々です。

是非活用して秒を取得してみてください

日時データから年月日または時分秒を取得する方法を下記リンクでまとめています。

【マクロVBA】日時データ系総まとめ!年月日時分秒を対象セルや変数、現在値から取得・抽出・出力する ► 独学エクセル塾 (dokugakuexcel.com)

それでは次回の記事でお会いしましょう。

モバイルバージョンを終了