「質問内容」

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