数値入力→時刻に変換 | |
---|---|
[195330] 数値入力→時刻に変換- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ けんけん -(2022/10/25(08:37)) □U R L/ 質問失礼します。 時間計算のため、VBAを活用したいです。 シート全体(もしくは可能であれば、何行目の何列目や範囲指定がコードのセル部分を変更するだけでできるものだとより助かります…)のセルに数値を入力すれば時間に変換されるようなコードが知りたいです。 例) 1:8分 入力:8→0:08 2:27分 入力:27→0:27 3:1時間23分 入力:123→1:23 4:13時間 入力:1300→13:00 ネット上に下記コードを共有してくれてる方がいたんですが、 1、2に対応できず、かつ2列目3列目のみの範囲だけなので こちらを応用、もしくは新たにコードをご教授いただけたらと思っておりますm(_ _)m 最終的にSUM関数で合計したいです。 よろしくお願いします! Option Explicit Private Sub Worksheet_Change(ByVal r As Range) On Error Resume Next '// 消したときは以降を処理しない If r.Text = "" Then Exit Sub End If '// 時刻以外が入力された場合は以降を処理しない If r.Column <> 2 And r.Column <> 3 Then Exit Sub End If '// 数値以外が入力された場合は以降を処理しない If IsNumeric(r.Value) = False Then Exit Sub End If Dim iLength As Integer '// 文字列長 '// 入力文字列長を取得 iLength = Len(r.Value) '// 3文字入力時 If iLength = 3 Then '// 1:23形式に変換 r.Value = Left(r.Value, 1) & ":" & Right(r.Value, 2) '// 4文字入力時 ElseIf iLength = 4 Then '// 12:34形式に変換 r.Value = Left(r.Value, 2) & ":" & Right(r.Value, 2) End If End Sub この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 ++++++++++++++++++++ OS ⇒OTHER Version⇒Excel 2007 ++++++++++++++++++++ |
[195331] Re[1]: 数値入力→時刻に変換- ■ / 記事引用/メール受信=OFF■ □投稿者/ けんけん -(2022/10/25(08:59)) □U R L/ すみません。 初めてこのような掲示板を利用させていただいたのですが、 別サイトに1件投稿後、こちらに投稿してしまいました。 マルチポストを知らずとはいえルール違反申し訳ございません。 別サイトの投稿が削除できなかったので、コメントにてこちらでの対応を希望する旨コメントしておきました。 以降、気を付けます。どなたかご教授いただけますと助かります。 よろしくお願いします。 |
[195332] Re[2]: 数値入力→時刻に変換- ■記事引用/メール受信=OFF■ □投稿者/ 補足 -(2022/10/25(09:15)) □U R L/ マルチポスト先で回答がついてそれについて追加質問をしておきながら取り消し。 h ttps://www.excel.studio-kazu.jp/kw/20221024203818.html?t=085910 |
[195333] Re[3]: 数値入力→時刻に変換- ■記事引用/メール受信=OFF■ □投稿者/ けんけん -(2022/10/25(09:21)) □U R L/ @補足 すみません。反省しています。 |
[195334] Re[4]: 数値入力→時刻に変換- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2022/10/25(11:21)) □U R L/ Private Sub Worksheet_Change(ByVal r As Range) Const 限定範囲 As String = "B:C" 'B列およびC列のみ処理 If Intersect(r, Range(限定範囲)) Is Nothing Then '限定範囲のみ処理 Exit Sub ElseIf r.CountLarge > 1 Then '1セルのみ処理 Exit Sub ElseIf r.Value = "" Then '// 消したときは以降を処理しない Exit Sub ElseIf IsNumeric(r.Value) = False Then '// 数値のみ処理 Exit Sub End If Application.EnableEvents = False r.Value = Format(r.Value, "0:00") Application.EnableEvents = True End Sub >最終的にSUM関数で合計したいです。 どの範囲をどこに表示するのか分からないです。 |
[195335] Re[5]: 数値入力→時刻に変換- ■記事引用/メール受信=OFF■ □投稿者/ けんけん -(2022/10/25(11:49)) □U R L/ @半平太さん 返信ありがとうございます!! すごすぎます! おおむね希望通りのコードです。 SUM関数については、B2等入力範囲の上部に挿入しようと考えていたため、 作っていただいた限定範囲部分を "B:C"→"B3:C30"のように変更すれば解決できました。 仮に、連続しない複数箇所を限定範囲とする場合、どのようなコードになりますでしょうか? よろしくお願いします。 |
[195336] Re[6]: 数値入力→時刻に変換- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2022/10/25(12:02)) □U R L/ >連続しない複数箇所を限定範囲とする場合 どんな箇所なのか分からないと具体的に回答できません。 例えば、B3:C30,F3:F9,H13:H19 と決まった範囲なら >Const 限定範囲 As String = "B:C" 'B列およびC列のみ処理 ↓ Const 限定範囲 As String = "B3:C30,F3:F9,H13:H19" と変更するだけで済みますが・・ |
[195337] Re[7]: 数値入力→時刻に変換- ■ / 記事引用/メール受信=OFF■ □投稿者/ けんけん -(2022/10/25(12:06)) □U R L/ @半平太さん 具体的に記載せずすみません! したかったことは、例で記載してくださった内容で解決できました。 ご対応ありがとうございました。 また機会がございましたら、よろしくお願いいたします。 |
このトピックに書きこむ |
---|