使用VBA刷新用户表单文本框

时间:2017-05-31 12:55:34

标签: excel vba excel-vba

我有一个UserForm,其中包含一个从=Now()函数填充的文本框。但是,我跟踪的数据是按照3班制计划运行的,所以"第3班"技术上会在第二天输入他们的数据。我已经使用if语句对此进行了调整,但我的问题是让我的文本框更新组合框的更改,允许您选择要输入的内容。我在另一个帮助站点的建议中尝试了DoEvents功能,但它没有用。提前谢谢!

Private Sub date_txtb_Change() If shift_cbox.Text = "Shift 1" Then date_txtb.Text = Format(Now(), "MM/DD/YY") 'Current Date DoEvents

ElseIf shift_cbox.Text = "Shift 2" Then
date_txtb.Text = Format(Now(), "MM/DD/YY") 'Current Date
DoEvents

ElseIf shift_cbox.Text = "Shift 3" Then
date_txtb.Text = Format(Now() - 1, "MM/DD/YY") 'Current Date -1
DoEvents

Else
'do nothing'

End If

End Sub

2 个答案:

答案 0 :(得分:0)

您使用的是错误的对象。您应该使用Private Sub date_txtb_Change()而不是Private Sub shift_cbox_Change()

答案 1 :(得分:0)

您需要在组合框的Change事件中输入代码,同时您可以使用Select Case来获得更清晰,更短的代码,这样您还可以使用更多功能来添加更多代码未来的情景(如果你需要)。

Private Sub shift_cbox_Change()

Select Case shift_cbox.Value
    Case "Shift 1", "Shift 2"
        date_txtb.Text = Format(Now(), "MM/DD/YY") 'Current Date

    Case "Shift 3"
        date_txtb.Text = Format(Now() - 1, "MM/DD/YY") 'Current Date -1

    Case Else
        'do nothing , or something for future scenario

End Select

End Sub