【问题标题】:Command button enable/disable based on textbox value基于文本框值的命令按钮启用/禁用
【发布时间】:2015-09-08 13:07:04
【问题描述】:

我正在尝试根据文本框的值启用/禁用命令按钮。前任。 “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

【问题讨论】:

  • 试试“me!Kommandoknap35.Enabled”而不是“Kommandoknap35.Enabled”,但是我通常使用可见属性来做类似的事情。如果他们不能使用按钮,甚至不要让它可见。 "me.visible = False"
  • 对不起,应该是“me.kommandoknap35.visible = false”
  • 当我思考这个问题时,最好先禁用或隐藏您的按钮,然后再单击它,或者不要禁用按钮,而是运行检查,如果它不符合条件,使用 msgBox 告诉用户它不是有效数据,如果是,则运行您的代码。我不知道在同一个按钮的单击事件上禁用按钮是最合乎逻辑的方法。

标签: date ms-access vba


【解决方案1】:

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

【讨论】:

  • 非常感谢!它正在工作,所以现在必须把它作为 Auto_Open() sub :D
【解决方案2】:

您的代码似乎有两个问题。

  1. DateAdd 函数中,您想使用 Now() 而不是 Date()Now() 将包括当前时间和日期。这很重要,因为您要比较的是小时数而不是天数。
  2. 启用/禁用逻辑是向后的(在应该禁用时启用按钮,反之亦然)。

以下是经过修正的简化版本:

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

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

【讨论】:

    猜你喜欢
    • 2010-12-04
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    相关资源
    最近更新 更多