循环使用VBA,十一月,十二月和随后一月

我打算创build一个macros来查找与当前年份相对应的文件,并循环显示其工作表。 表单的名称对应于月份名称(瑞典语)。 但是我的问题是由于我在导入的文件中可能删除了数据等等,我不想导入比2个月前input的数据长,并且从相应的月份到今天的月份(实际上是到UBound(MyHeadings)作为我想提取的一些数据在一年中是不变的)。

Dim MonthNo As Integer 'Makes MonthNo = Month(Date) return an integer, instead of actual month name MonthNo = Month(Date) myHeadings = Split("Januari,Februari,Mars,April,Maj,Juni,Juli,Augusti,September,Oktober,November,December", ",") p3file = "C:\pathtofile\" 'Because Dir does not return pathfile. YearNo = Year(Date) path3 = IIF(MonthNo-2, Dir("C:\pathtofile\" & "-" & YearNo-1 & ".xlsx"),Dir("C:\pathtofile\" & "-" & YearNo & ".xlsx")) Do While Len(path3) > 0 Set openWb = Workbooks.Open(p3file & path3) For i = MonthNo To UBound(myHeadings) Set openWs = openWb.Sheets(CStr(YearNo)) 'Do things End If Next i YearNo = YearNo + 1 path3 = Dir("C:\pathtofile\" & YearNo & ".xlsx") Loop 

以上是我所尝试过的。 如果MonthNo -2小于0,则会出现问题,因为那样我必须导入前一年的文件(这是我通过IIf语句所做的)。 然而,循环变得错了。 例如,如果当前月份是2015年1月份,我想打开2014年的文件,循环到11月和12月,然后打开2015年文件并在1月份循环。 有没有什么好办法达到这个目的?

你的代码可能是这样的:

 Dim MonthNo As Integer, YearNo As Integer Dim CurrentYear As Integer Dim StartDate As Date Dim i As Integer Const MonthOffset As Integer = -2 CurrentYear = Year(Date) StartDate = DateAdd("m", MonthOffset, Date) MonthNo = Month(StartDate) YearNo = Year(StartDate) Do While YearNo <= CurrentYear 'Open file here For i = MonthNo To 12 'Process sheets here Next i MonthNo = 1 YearNo = YearNo + 1 Loop 

此代码应该可以在常量中定义的任何月份偏移量上正常工作。