[[20251104153854]] 『時間(hh:mm形式)文字列の計算方法について』(栗栄太) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『時間(hh:mm形式)文字列の計算方法について』(栗栄太)

8時15分を示す。"8:15" をセルに書込んで、書式設定で数値にすると
0.34375になります。
これをVBAで行うにはどうすればいいですか?
セルに一度書いて、書式を変更してセルを読みこむという方法ではなく
純粋にプログラムだけでの方法です。

また同様に、
8時15分を示す。"8:15"を分の値として 495 に
計算する方法も教えてください。

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


すみません。
文字列をSplitで":" で分解して計算する方法でできるのはわかりますが
関数とか用意されているのかを聞きたいです。
(栗栄太) 2025/11/04(火) 15:41:57

以下のようなことができるVBAの関数はないのでしょうか?

Private Function GetHHMMtoMinutes(valstr As String) As Long

    Dim var As Variant
    var = Split(valstr, ":")
    GetHHMMtoMinutes = Val(var(0)) * 60 + Val(var(1))
End Function

Private Function GetHHMMtoDayNum(valstr As String) As Double

    Dim var As Variant
    var = Split(valstr, ":")
    GetHHMMtoDayNum = Val(var(0)) / 24 + Val(var(1)) / (24 * 60)
End Function
(栗栄太) 2025/11/04(火) 15:48:30

 EXCELで時刻は1日を1、1時間を1/24、1分を1/(24*60)とする小数で管理していて表示形式で時刻表示の形にしているもの。

 なので例えばA1セルに時刻があるとして

 Sub Test()
    Dim A As Double

    A = Range("A1").Value
    MsgBox A

 End Sub
 のように小数点型の変数にいれれば小数としてそのまま扱える。

 後者に関しては上記(1日=1、1時間=1/24、1分=1/(24*60))を参考にして

 Sub tst2()
    Dim a As Integer

    a = Range("A1") * 24 * 60
    MsgBox a

 End Sub

(ねむねむ) 2025/11/04(火) 15:58:01


Dim lll As Double
lll = CDate("8:15")
MsgBox lll
(不明) 2025/11/04(火) 16:06:19

 私はセルに時刻が入力されていて、と判断したのだがよく見るとVBA内で文字列を、
 ということか。

 であれば私の方法ではなく不明さんの方法で試してみてくれ。

 また、不明さんの方法で
 lll * 24 * 60
 とすると"8:15"→495にできる。
(ねむねむ) 2025/11/04(火) 16:18:47

 既に皆さんから提示があったとおりです。

 >以下のようなことができるVBAの関数はないのでしょうか?
 組み込みの関数は無いですね。(簡単なものなので、既にあると言ってもよいかも知れません)

 既に回答があったように 
 Private Function GetHHMMtoMinutes(valstr As String) As Long
     GetHHMMtoMinutes = CDate(valstr)*24*60
 End Function

 Private Function GetHHMMtoDayNum(valstr As String) As Double
     GetHHMMtoDayNum = CDate(valstr)
 End Function
 とすれば、
 Sub test()
     [A1] = GetHHMMtoMinutes("8:15")
     [A2] = GetHHMMtoDayNum("8:15")
 End Sub
 と使えます。

 # もっともわざわざ長い名前の関数にするほどでもない気がしますけれども。
 # 例えば後者は、CDbl(CDate("8:15")) で済みます。

(xyz) 2025/11/04(火) 17:54:57


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.