首页 > 解决方案 > InputBox 输入时间,带验证

问题描述

我希望当用户在 A 列的单元格中输入一个值时,应该弹出一个输入框询问时间。我希望 C 列中该输入框的输出与在 A 列中输入值的位置在同一行中。我希望每次在 A 中输入某些内容时都会发生这种情况。

我还想要如果时间没有输入或输入不正确(hh:mm),然后一个消息框说时间没有正确输入,然后循环回到输入框。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range
    Dim xRtn As Variant
    
    Set KeyCells = Range("A1:A100")
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then    
        Do Until Not xRtn = 0 Or Format(xRtn, "hh:mm")
            xRtn = Application.InputBox("Wat is de tijd dat het monster genomen is?" & vbNewLine & "Gebruik UU:MM" & vbNewLine & "Voorbeeld: 09:30", "Tijdnotatie")
            Columns("C").Value = xRtn
            If xRtn = 0 Then
                If Not MsgBox("Een correcte tijdsnotatie is nodig om door te gaan. Klik op" & vbNewLine & "<Ok> om de tijd opnieuw in te vullen", vbOK + vbDefaultButton1 + vbExclamation, vbNullString) = vbOK Then
                End If
            End If
        Loop
    End If
End Sub

标签: excelvbainputbox

解决方案


您可以只自动输入时间,而不是为它弹出一个框,然后检查以确保它们没有搞砸。

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 1 Then
    Range("C" & Target.Row).Value = Format$(Now, "hh:mm")
  End If
End Sub

推荐阅读