「質問内容」
Excelで、数字を入力したときに自動で時刻表記h:mmへ変換してほしい。例えば、450と入力したら4:50となり、030と入力したら0:30となり、1320と入力したら13:20となるようにできないかな。入力はすべてA列にする。
020と入力すると、無効な入力です。正しい形式で入力してくださいとでた
→なるほど、「020」のような入力は0:20として変換したい場合ですね。それを考慮してVBAコードを修正すれば対応可能です。以下の更新版を試してください:
「コード」
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range
Dim TimeValue As Double
' A列全体を対象にする
If Not Intersect(Target, Me.Columns("A")) Is Nothing Then
Application.EnableEvents = False
On Error Resume Next
For Each Cell In Target
' 入力値が数値か確認
If IsNumeric(Cell.Value) Then
Select Case Len(Cell.Value)
Case 2 ' 020のような2桁の場合
TimeValue = TimeSerial(0, Cell.Value, 0)
Case 3 ' 450のような3桁の場合
TimeValue = TimeSerial(Left(Cell.Value, 1), Right(Cell.Value, 2), 0)
Case 4 ' 1320のような4桁の場合
TimeValue = TimeSerial(Left(Cell.Value, 2), Right(Cell.Value, 2), 0)
Case Else
TimeValue = 0 ' 無効な場合
End Select
If TimeValue > 0 Then
Cell.Value = Format(TimeValue, "h:mm")
Else
MsgBox "無効な入力です。正しい形式で入力してください。", vbExclamation
End If
End If
Next Cell
On Error GoTo 0
Application.EnableEvents = True
End If
End Sub