我正在尝试创建一个电子表格,其中将输入许多事件,例如发送的通信。我想创建一个用户可以输入的用户表单1.事件的日期2.事件发生的时间(以EST为单位)2.该事件的等效UTC时间3.等效的东京时间事件
始终可以输入日期,但您永远不知道给定事件的时间戳是EST,UTC还是东京时间戳。我想这样,如果其中任何一个具有时间值,则自动填充UTC,EST或Tokyo的三个texbox。因此,例如,如果在EST框中输入时间戳,VBA将添加4小时并填充UTC框并添加另外12或其他任何东西以填充东京框。
首先,我在userform中为Date文本框编写了以下代码:
Public Sub dtefrm_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim dte
Dim dstdte As Boolean
Let dte = CDate(Me.dtefrm.Value)
Select Case True
Case dte > CDate("3/9/2008") And dte < CDate("11/2/2008")
dstdte = True
Me.dayconf.Value = "Daylight Savings"
End Select
End Sub
现在,我想将代码附加到EST文本框中,以便在输入时间时,如果日期介于3/1/2008和11/1之间,则UTC文本框将填充该时间+4 / 2008,如果不是,则为+ 5。
这就是我提出的:
Public Sub estfrm_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
varest = Application.WorksheetFunction.Text(Me.estfrm.Value, "hh:mm:ss")
Me.estfrm.Value = varest
Let dte = CDate(Me.dtefrm.Value)
Select Case True
Case dte > CDate("3/9/2008") And dte < CDate("11/2/2008")
dstdte = True
End Select
If dstdte = True Then
Me.utcfrm.Value = CDate(Me.utcfrm.Value) + 4
End If
End Sub
我认为我在EST框代码中使用dstdte布尔值时遇到了麻烦,我试图让两个子公共没有帮助,所以我将选择案例代码从第一个子复制到第二个,但仍然没运气。现在我得错误十三。我试过4/24而不是4,同样的问题。
供参考,dtefrm是用户输入日期的文本框的名称,dayconf是表单上的文本框,如果日期匹配则表示夏令时,而estfrm是EST时间的框的名称输入,utcfrm是UTC框的名称。
答案 0 :(得分:0)
执行可以从两者调用的功能:
Function IsDts(ByVal cellValueDate as Date)
Select Case True
Case cellValueDate > CDate("3/9/2008") And cellValueDate < CDate("11/2/2008")
IsDts = True
Case Else
IsDts = False
End Select
End Function
并在您的其他活动中调用此内容,例如estfrm_BeforeUpdate
isValDst = IsDts(CDate(Me.dtefrm.Value))