大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで時間から時、分、秒を取得する方法をご紹介します。時、分、秒を取得する方法は、それぞれHour、Minute、Secondを使う方法と、Formatを使う方法があります。場面に応じて使い分けていきましょう。

はじめに

この記事では、時間から時、分、秒を取得する方法についてご紹介します。

時、分、秒を取得するには、それぞれ、Hour、Minute、Secondを使う方法と、Formatを使う方法があります。

数値で取得したい場合は、Hour、Minute、Secondが便利です。

文字列で時、分、秒をして型を整えたいといった場合は、Formatが使えます。

場面に応じて使い分けができるとVBAコードがシンプルになります。

この記事で紹介すること

  • 時間から時、分、秒を取得する

目次から見たい項目へ移動すると便利ですよ。

目次

ポイントとなるVBAコード

初めに、ポイントとなるVBAコードを記載しておきます。

VBAコードだけ確認したいという場合に、ご活用ください。

a = "17:1:2"
b = Hour(a) '『時』を取得
b = Minute(a) '『分』を取得
b = Second(a) '『秒』を取得

'Formatを使う場合
a = "17:1:2"
b = Format(a, "hh") '『時』を取得
b = Format(a, "nn") '『分』を取得
b = Format(a, "ss") '『秒』を取得

では、解説していきます。

VBAで時間から時、分、秒を取得する

時間から時、分、秒を取得する方法をご紹介します。

使うVBA関数は次の3つです。

  • 時間を取得:Hour
  • 分を取得:Minute
  • 秒を取得:Second

英語をそのまま入力すればいいんですね。簡単です。

では、実際にVBAコードを書いて試してみます。

時間から『時』を取得(Hour)

まず、時間から『時』を『Hour』を使って取得してみます。

時間『"17:1:2"』から『時』を取得するVBAコードです。

Sub TEST1()
    
    a = "17:1:2"
    
    b = Hour(a) '『時』を取得
    
    MsgBox b
    
End Sub

実行してみます。

『時』を取得

Hourを使って時間から時を取得した結果

結果は、『17』時となりました。

時間から、『時』の部分だけが取得できています。

時間から『分』を取得(Minute)

つづいて、時間から『分』を『Minute』を使って取得してみます。

時間『"17:1:2"』から『分』を取得するVBAコードです。

Sub TEST2()
    
    a = "17:1:2"
    
    b = Minute(a) '『分』を取得
    
    MsgBox b
    
End Sub

実行してみます。

『分』を取得

Minuteを使って時間から分を取得した結果

結果は、『1』分となりました。

時間から、『分』の部分だけが取得できています。

時間から『秒』を取得(Second)

まず、時間から『秒』を『Second』を使って取得してみます。

時間『"17:1:2"』から『秒』を取得するVBAコードです。

Sub TEST3()
    
    a = "17:1:2"
    
    b = Second(a) '『秒』を取得
    
    MsgBox b
    
End Sub

実行してみます。

『秒』を取得

Secondを使って時間から秒を取得した結果

結果は、『2』秒となりました。

時間から、『秒』の部分だけが取得できています。

VBAでFormatを使って時、分、秒を取得する

時間から時、分、秒を取得する方法は、もう1つあります。

それは、Formatを使う方法で、次のように引数を入力します。

  • 時間を取得:"hh"
  • 分を取得:"nn"
  • 秒を取得:"ss"

先ほどのHour、Minute、Secondと違う点は、文字列で取得するという点です。

必ず2文字で値を取得したいなど、形を整えて時、分、秒を取得したい場合に使えます。

時間から『時』を取得

時間からFormatを使って『時』を取得する方法をご紹介します。

Formatに『"hh"』を入力すると『時』を取得できます。

時間『"17:1:2"』からFormatを使って『時』を取得するVBAコードです。

Sub TEST4()
    
    a = "17:1:2"
    
    b = Format(a, "hh") '『時』を取得
    
    MsgBox b
    
End Sub

実行してみます。

『時』を取得

Formatを使って時間から時を取得した結果

結果は、『17』時となりました。

時間から『時』が取得できています。

時間から『分』を取得

時間からFormatを使って『分』を取得する方法をご紹介します。

Formatに『"nn"』を入力すると『分』を取得できます。

時間『"17:1:2"』からFormatを使って『分』を取得するVBAコードです。

Sub TEST5()
    
    a = "17:1:2"
    
    b = Format(a, "nn") '『分』を取得
    
    MsgBox b
    
End Sub

実行してみます。

『分』を取得

Formatを使って時間から分を取得した結果

結果は、『01』分となりました。

時間から『分』が取得できています。また、取得結果は、2文字です。

取得結果を2文字に統一したいという場合に、Formatが使えます。

時間から『秒』を取得

時間からFormatを使って『秒』を取得する方法をご紹介します。

Formatに『"ss"』を入力すると『秒』を取得できます。

時間『"17:1:2"』からFormatを使って『秒』を取得するVBAコードです。

Sub TEST6()
    
    a = "17:1:2"
    
    b = Format(a, "ss") '『秒』を取得
    
    MsgBox b
    
End Sub

実行してみます。

『秒』を取得

Formatを使って時間から秒を取得した結果

結果は、『02』秒となりました。

時間から『秒』が取得できています。そして、取得結果は、2文字です。

取得結果を2文字に統一したいという場合は、Formatを使いましょう。

VBAで時、分、秒をTimeSerialで時間に変換

時、分、秒から時間に変換する方法をご紹介します。

先ほどまでは、時間から時、分、秒を分ける方法をご説明しました。

分けて取得した時、分、秒を時間に変換したいという場合があるかと思いますので、併せてご紹介しておきます。

使い方(TimeSerial)

時、分、秒を時間に変換するTimeSerialには、次のように入力します。

『時間 = TimeSerial(時, 分, 秒)』

では、時間に変換するVBAコードについてみていきます。

時、分、秒を時間に変換

時、分、秒がそれぞれ『17』、『1』、『2』の数値を時間に変換してみます。

Sub TEST7()
    
    '時、分、秒を時間に変換
    a = TimeSerial(17, 1, 2)
    
    MsgBox a
    
End Sub

実行してみます。

時、分、秒を時間に変換

TimeSerialで時、分、秒を時間に変換した結果

結果は、『17:01:02』となりました。

時、分、秒を時間に変換できています。

実用例

時間から時、分、秒を取得するHour、Minute、Secondの実用例についてご紹介します。

InputBoxの時間から時、分、秒を取得してセルに入力

InputBoxに入力した時間から時、分、秒を取得してセルに入力する、というのをやってみます。

VBAコードはこちらです。

Sub TEST8()
    
    a = InputBox("時間を入力してください")
    
    With ActiveSheet
        .Cells(2, 1) = Hour(a) '『時』をセルに入力
        .Cells(2, 2) = Minute(a) '『分』をセルに入力
        .Cells(2, 3) = Second(a) '『秒』をセルに入力
    End With
    
End Sub

VBAコードを実行してみます。

InputBoxに時間を入力

InputBoxに時間を入力する

InputBoxがでてきますので、時間『17:1:2』を入力して、OKをクリックします。

セルに時、分、秒を入力

Hour、Minute、Secondで時、分、秒を取得してセルに入力した結果

それぞれのセルに時、分、秒が入力されました。

現在の時間から時、分、秒を取得する

つづいて、現在の時間から時、分、秒を取得する、というのをやってみます。

VBAコードです。

Sub TEST9()
    
    a = Time '現在の時間
    b = Hour(a) & "時" '『時』を取得
    c = Minute(a) & "分" '『分』を取得
    d = Second(a) & "秒" '『秒』を取得
    
    MsgBox a & vbLf & b & vbLf & c & vbLf & d
    
End Sub

実行してみます。

現在の時間から時、分、秒を取得

Hour、Minute、Secondを使って現在の時間から時、分、秒を取得した結果

現在の時間から、時、分、秒が取得できました。

おわりに

この記事では、時間から時、分、秒を取得する方法についてご紹介しました。

時、分、秒を取得するには、それぞれ、Hour、Minute、Secondを使えばできます。

また、時、分、秒を2文字で取得したいという場合には、Formatを使って文字列で取得する方法があります。

参考になればと思います。最後までご覧くださいましてありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す