2015-09-08 65 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 

你也可以考慮其在這個代碼運行更新事件文本框中的,而不是點擊一個單獨的按鈕上時。這將使按鈕的啓用/禁用更加無縫。

相關問題