我创建了以下用户表单,以便在日期之间导航:2014年6月13日至2014年7月10日。
UserForm http://im50.gulfup.com/hyS1Fo.png
这个想法是,如果当前日期在13/06/2014之前,则Date2变量设置为“13/06/2014”,如果当前日期在10/07/2014之后,则设置Date2变量在“10/07/2014”
我遇到的问题是“下一步”按钮的代码无法正常工作。它只是导航到第二天然后停在那里,它应该一直导航到“10/07/2014”
以下是我的代码:
Dim ws As Worksheet
Dim DateLooper As Date
Dim EndDate As Date
Dim Date1 As Date
Dim Date2 As Date
Private Sub UserForm_Initialize()
Date1 = Date
Date2 = Date
If Date1 < DateValue("June 13, 2014") Then
Date2 = DateValue("June 13, 2014")
End If
If Date1 > DateValue("July 10, 2014") Then
Date2 = DateValue("July 10, 2014")
End If
EndDate = DateValue("July 10, 2014")
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
For DateLooper = Date2 To EndDate
UserForm1.Label3.Caption = Format(DateLooper, "dddd, mmmm dd, yyyy")
'code goes here
Date2 = DateLooper
Exit For
Next DateLooper
End With
End Sub
Private Sub CommandButton2_Click()
Date1 = Date
Date2 = Date
If Date1 < DateValue("June 13, 2014") Then
Date2 = DateValue("June 13, 2014")
End If
If Date1 > DateValue("July 10, 2014") Then
Date2 = DateValue("July 10, 2014")
End If
EndDate = DateValue("July 10, 2014")
With ws
For DateLooper = (Date2 + 1) To EndDate
UserForm1.Label3.Caption = Format(DateLooper, "dddd, mmmm dd, yyyy")
'code goes here
Date2 = DateLooper
Exit Sub
Next DateLooper
If (DateLooper - 1) = EndDate Then
MsgBox "End Date reached"
End If
End With
End Sub
此外,如果有人可以提供“上一页”按钮的代码,我会很感激,我已经尝试了For DateLooper = (Date2 - 1) To 2 Step -1
,但它也无法正常工作:(
以下是我的工作簿的链接:https://db.tt/aM7PZIDs
提前致谢。
答案 0 :(得分:1)
好的,所以我注意到你的代码中有一些东西。首先,不需要循环。您的下一个/上一个按钮是您想要增加日期而不是循环的按钮。我还注意到你有很多不必要的变量。
尝试以下代码。注意,我在一个用户框架上测试了这个,所以你可能需要调整你的表单才能工作。
Option Explicit
Dim dtStr As Date
Private Sub UserForm_Initialize()
Dim Date1 As Date
Date1 = Date
If Date1 < dateValue("June 13, 2014") Then
Date1 = dateValue("June 13, 2014")
ElseIf Date1 > dateValue("July 10, 2014") Then
Date1 = dateValue("July 10, 2014")
End If
UserForm1.Label3.Caption = Format(Date1, "dddd, mmmm dd, yyyy")
End Sub
Private Sub CommandButton1_Click()
With UserForm1.Label3
dtStr = Mid(.Caption, InStr(1, .Caption, ",") + 2)
If dtStr = dateValue("June 13, 2014") Then Call Err_Msg: Exit Sub
.Caption = Format(dtStr - 1, "dddd, mmmm dd, yyyy")
End With
End Sub
Private Sub CommandButton2_Click()
With UserForm1.Label3
dtStr = Mid(.Caption, InStr(1, .Caption, ",") + 2)
If dtStr = dateValue("July 10, 2014") Then Call Err_Msg: Exit Sub
.Caption = Format(dtStr + 1, "dddd, mmmm dd, yyyy")
End With
End Sub
Sub Err_Msg()
MsgBox "Beginning or End Date Reached!", vbCritical
End Sub
答案 1 :(得分:0)
你的循环中的Exit语句之前没有任何条件语句,所以每个for循环只会执行一次,每次
在Exit语句之前放置一个条件If-Then语句,或者如果你不需要它们就删除Exit语句