【问题标题】:Inputbox, empty input clears cell输入框,空输入清除单元格
【发布时间】:2015-10-23 11:40:03
【问题描述】:

我正在尝试制作一个宏来检查单元格的更改。如果单元格更改,用户必须提供日期。当按下取消或该字段留空时,应清除另一个单元格。当按下取消时,单元格被清除,但是当按下“确定”而不提供日期时,我得到一个错误。我的代码如下:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim myValue As Date

    If Target.Address = "$E$17" Then

        myValue = Application.InputBox("Geef de revisiedatum op, DD/MM/JJ", "Revisie datum")
        Range("$I$17").Value = myValue
        If myValue = False Then
            Range("$I$17") = ""
            Exit Sub
        End If
    End If

    If Target.Address = "$E$20" Then

        myValue = Application.InputBox("Geef de revisiedatum op, DD/MM/JJ", "Revisie datum")
        Range("$I$20").Value = myValue
        If myValue = False Then
            Range("$I$20") = ""
            Exit Sub
        End If
    End If
End Sub

【问题讨论】:

  • 添加另一个条件If myValue = vbNullString Then
  • 我仍然收到错误 13:类型不匹配
  • 也许试试:IF LEN(myValue) = 0 THEN

标签: vba inputbox


【解决方案1】:

这是因为您将 myvalue 声明为日期。当没有返回值时,它是一个日期无法处理的字符串。

将 myValue 更改为字符串。然后您对 myValue = False 的检查将更改为 If myValue = "" then。

Private Sub Worksheet_Change(ByVal Target As Range)

Dim myValue As String

    If Target.Address = "$E$17" Then

        myValue = Application.InputBox("Geef de revisiedatum op, DD/MM/JJ", "Revisie datum")
        Range("$I$17").Value = myValue
        If myValue = "" Then
            Range("$I$17") = ""
            Exit Sub
        End If
    End If

    If Target.Address = "$E$20" Then

        myValue = Application.InputBox("Geef de revisiedatum op, DD/MM/JJ", "Revisie datum")
        Range("$I$20").Value = myValue
        If myValue = "" Then
            Range("$I$20") = ""
            Exit Sub
        End If
    End If
End Sub

【讨论】:

  • 感谢 MatthewD,现在它确实有效,但是数据格式为 mm/dd/yy。我们荷兰人有点奇怪,我们喜欢 dd/mm/yy 格式,有没有办法强制这样做?
猜你喜欢
  • 2013-06-21
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
  • 2022-06-23
  • 1970-01-01
  • 2011-01-12
  • 2020-02-21
  • 2013-05-30
相关资源
最近更新 更多