Date 基于文本框值的命令按钮启用/禁用

Date 基于文本框值的命令按钮启用/禁用,date,ms-access,vba,Date,Ms Access,Vba,我正在尝试根据文本框的值启用/禁用命令按钮。例如,“08-09-2015 15:06:24”,取自表格列字段 它似乎将启用或禁用它,具体取决于 我想让它知道,如果txt.Value是15个多小时前,那么它应该激活按钮。如果不是,请将其保留为“false” 文本框和命令按钮位于同一窗体上 这就是我目前所拥有的,显然不起作用 公共Sub-Kommandoknap184_点击() 如果Me.txtOpdTid.Value

我正在尝试根据文本框的值启用/禁用命令按钮。例如,“08-09-2015 15:06:24”,取自表格列字段

它似乎将启用或禁用它,具体取决于<或>

我想让它知道,如果txt.Value是15个多小时前,那么它应该激活按钮。如果不是,请将其保留为“false”

文本框和命令按钮位于同一窗体上

这就是我目前所拥有的,显然不起作用

公共Sub-Kommandoknap184_点击()
如果Me.txtOpdTid.Value
Date()
提供当前日期,午夜为时间
Now()
提供当前日期和时间。所以我想你想要的是
Now()
而不是
Date()

公共Sub-Kommandoknap184_点击()
如果Me.txtOpdTid.Value
您的代码似乎有两个问题

  • 在DateAdd函数中,要使用Now()而不是Date()。Now()将包括当前时间和日期。这很重要,因为您比较的是小时数,而不是天数
  • 启用/禁用逻辑是向后的(在应禁用按钮时启用按钮,反之亦然)
  • 以下是一个简化版本,并附有更正:

    Public Sub Kommandoknap184_Click()
        Dim isMoreThan15HoursAgo As Boolean
        isMoreThan15HoursAgo = Me.txtOpdTid < DateAdd("h", -15, Now)
        Me.Kommandoknap35.Enabled = isMoreThan15HoursAgo
    End Sub
    
    公共Sub-Kommandoknap184_点击()
    Dim作为布尔值超过15小时
    Ismore大于15hoursago=Me.txtOpdTid

    您还可以考虑在文本框的“后更新”事件中运行此代码,而不是单击单独的按钮。这将使按钮的启用/禁用更加无缝。

    尝试“me!Kommandoknap35.Enabled”而不是“Kommandoknap35.Enabled”,但是我通常使用visible属性来实现类似的功能。如果他们不能使用按钮,甚至不要让它可见。“me.visible=False”对不起,应该是“me.kommandoknap35.visible=False”当我思考这个问题时,最好在单击按钮之前禁用或隐藏按钮,或者不禁用按钮,而是运行检查,如果它不符合条件,请使用msgBox告诉用户它不是有效数据,如果它符合条件,然后运行代码。我不知道在同一个按钮的点击事件中禁用按钮是最合乎逻辑的方法。非常感谢!它正在工作,所以现在必须把它设为自动打开