在另一张纸上创build一个列表 – 运行时错误9

我使用从另一篇文章编辑的以下代码来列出开始和结束date之间的所有date。 该列表正在与包含开始和结束date的单元格不同的工作表上创build。 如果我有sheet6打开,代码工作,但如果我在sheet1上,则不会。 我得到了“运行时错误9:下标超出范围”。 debugging突出显示对sheet6的引用。 我怎样才能修改这个代码工作,而不pipe活动工作表?

Sub GenerateDates() Dim FirstDate As Date Dim LastDate As Date Dim NextDate As Date FirstDate = Sheet1.Range("CZ").Value LastDate = Sheet1.Range("DA").Value NextDate = FirstDate Worksheets("sheet6").Range("A1").Select Do Until NextDate > LastDate ActiveCell.Value = NextDate ActiveCell.Offset(1, 0).Select NextDate = NextDate + 1 Loop End Sub 

基本上,总是尝试设置和完全限定您的工作表和范围variables。 然后直接与这些工作,而不是使用select/激活。

 Sub GenerateDates() Dim wb As Workbook Dim wsData As Worksheet Dim wsDest As Worksheet Dim rDest As Range Dim FirstDate As Date Dim LastDate As Date Dim NextDate As Date Set wb = ActiveWorkbook Set wsData = wb.Sheets(1) Set wsDest = wb.Sheets(6) Set rDest = wsDest.Range("A1") FirstDate = wsData.Range("CZ").Value LastDate = wsData.Range("DA").Value NextDate = FirstDate Do Until NextDate > LastDate rDest.Value = NextDate Set rDest = rDest.Offset(1) NextDate = NextDate + 1 Loop End Sub