2015-09-08 68 views
1

我试图启用/禁用基于文本框的值的命令按钮。防爆。 “08-09-2015 15:06:24”,取自表列字段基于文本框值启用/禁用命令按钮

看起来它会启用或禁用它,具体取决于<或>。

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

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

这是我到目前为止,显然不工作。

Public Sub Kommandoknap184_Click() 
If Me.txtOpdTid.Value < DateAdd("h", -15, Date) Then 
Kommandoknap35.Enabled = False 
Else 
Kommandoknap35.Enabled = True 
End If 
End Sub 
+0

尝试“我!Kommandoknap35.Enabled”而不是“Kommandoknap35.Enabled”,但是我通常使用visible属性来做这样的事情。如果他们不能使用按钮,甚至不要使其可见。 “me.visible = False” – Gene

+0

对不起,应该是“me.kommandoknap35.visible = false” – Gene

+0

当我思考这个问题时,最好在点击按钮之前禁用或隐藏按钮,或者禁用按钮,运行你的支票,如果它不符合标准,使用msgBox告诉用户它不是有效数据,如果它是,那么运行你的代码。我不知道在同一按钮的单击事件中禁用按钮是最合乎逻辑的方法。 – Gene

回答

2

Date()给你午夜时间的当前日期。 Now()为您提供当前日期和时间。所以我想你想要Now()而不是Date()

Public Sub Kommandoknap184_Click() 
If Me.txtOpdTid.Value < DateAdd("h", -15, Now) Then 
    ' Value is MORE than 15 hours ago, then it should activate the button 
    Me.Kommandoknap35.Enabled = True 
Else 
    Me.Kommandoknap35.Enabled = False 
End If 
End Sub 
+0

非常感谢!它的工作,所以现在得把它作为Auto_Open()子:D – Thiil

0

看起来你的代码有两个问题。

  1. 使用DateAdd功能要使用现在的()代替日期()现在()将包含当前时间和日期。这一点很重要,因为您正在比较小时数而不是天数。
  2. 启用/禁用逻辑是反向的(启用按钮时应该禁用,反之亦然)。

下面是一个简化版本与更正:

Public Sub Kommandoknap184_Click() 
    Dim isMoreThan15HoursAgo As Boolean 
    isMoreThan15HoursAgo = Me.txtOpdTid < DateAdd("h", -15, Now) 
    Me.Kommandoknap35.Enabled = isMoreThan15HoursAgo 
End Sub 

你也可以考虑其在这个代码运行更新事件文本框中的,而不是点击一个单独的按钮上时。这将使按钮的启用/禁用更加无缝。

相关问题