【发布时间】:2014-01-03 13:51:34
【问题描述】:
我有一个包含 3 个文本框和一个微调器的日期的表单。 我使用了 3 个文本框来解决国际日期的问题,因此 Excel 不可能根据不同的格式误解预期的日期。
无论如何... 当我单击微调器时,下一个或上一个日期出现在 3 个框中。 IE。如果是 2013 年 2 月 28 日,它将转到 2013 年 3 月 1 日。它一次移动一天。
我的老板希望它根据光标所在的文本框移动。所以如果它在 txtMonth 中,日期应该从 2013 年 2 月 28 日到 2013 年 3 月 28 日等。
如何让微调器检测到哪个文本框包含光标(如果有的话?)一旦知道了,我就可以进行数学计算了。
Private Sub spinDate_SpinDown()
Dim bGoodDate As Boolean
Dim iMonth As Integer
Dim dDate As Date
If Not bIsValidDate(bGoodDate) Then ' Check that the 3 boxes make a valid date
GoTo ErrorExit
End If
iMonth = Month(DateValue("01-" & Me.txtMon & "-2014"))
dDate = DateValue(Me.txtDay & "-" & Me.txtMon & "-" & Me.txtYear)
dDate = DateAdd("d", -1, dDate) ' Decrement date
Me.txtDay = Format(Day(dDate), "00")
Me.txtMon = Format(dDate, "mmm")
Me.txtYear = Format(Year(dDate), "0000")
m_clsCRE.ETA = dDate
m_clsCRE.bChanged = True
ErrorExit:
End Sub
* 已更新以下解决方案 ** ' 此解决方案检测光标是否在日、月或年框中的最后一个。 ' 旋转按钮按所选数量(日、月或年)递增 ' 这些框是链接在一起的,因此旋转会根据您的选择将您带到下一个有效日期
Private Sub spinDate_SpinDown() ' Same for SpinUp but used +1
Dim bGoodDate As Boolean
Dim dDate As Date
If Not bIsValidDate(bGoodDate) Then ' check that date user typed in boxes is valid
GoTo ErrorExit
End If
dDate = DateValue(Me.txtDay & "-" & Me.txtMon & "-" & Me.txtYear)
If Len(msDatePart) = 0 Or StrComp(msDatePart, "DAY", vbTextCompare) = 0 Then
dDate = DateAdd("d", -1, dDate)
ElseIf StrComp(msDatePart, "MONTH", vbTextCompare) = 0 Then
dDate = DateAdd("m", -1, dDate)
Else ' Year
dDate = DateAdd("yyyy", -1, dDate)
End If
Me.txtDay = Format(Day(dDate), "00")
Me.txtMon = Format(dDate, "mmm")
Me.txtYear = Format(Year(dDate), "0000")
m_clsCRE.ETA = dDate ' Save real date value (not text form)
m_clsCRE.bChanged = True
ErrorExit:
End Sub
Private Sub txtDay_Enter()
' Used with calendar spinner
msDatePart = "DAY"
End Sub
Private Sub txtMon_Enter()
' Used with calendar spinner
msDatePart = "MONTH"
End Sub
Private Sub txtYear_Enter()
' Used with calendar spinner
msDatePart = "YEAR"
End Sub
【问题讨论】:
-
顺便说一句,你见过THIS
-
悉达多,我下载了你的日历选择器并开始使用它。做了一些我在另一篇文章中描述的更改。它非常有用!我可能最终会在这个项目或下一个项目中使用它。