我是一个全新的VBA用户,试图根据一系列日期复制和粘贴数据 . 在第一列中我有日期,在第二列中我有我想要复制和粘贴的数据 . CurYear是指我正在寻找的范围内的结束日期,StatDate指的是我正在寻找的范围中的开始日期 . 当我运行此代码时,它崩溃Excel . 请帮助我很迷茫
Worksheets("Weekly").Select
Dim nRows As Integer
Dim CurYear As Date
Dim StartDate As Date
nRows=Range("A1").CurrentRegions.Count.Rows
CurYear=Range("I265").Value
StartDate=Range("M5").Value
Do While Cells(nRows,1)<>""
if Cells(nRows,1).Value< CurYear & Cells(nRows,1)> StartDate Then
Cells(nRows,1).Offset(0,1).Copy
Worksheets("Weekly").Range("H41").Paste
Loop
End If
2 回答
您可能希望考虑以下代码与代码或Rodger相同但比使用
Select
和复制/粘贴语法更快,而不是使用大量内存并使程序运行缓慢的复制/粘贴 .将“option explicit”放在代码的顶部(在sub之前),它会告诉你要解决的问题 . 这样做会修复错误的一部分,如果你的结束是在循环之外而不是在它内部,但它不会发现你没有改变你的循环计数器 . 请尝试使用此代码 . 它实际上几乎与你的几个小改动相同 .
另外,为了帮助调试,请打开本地窗口(在VBE中查看) . 使用F8逐步执行代码,在本地窗口中查看变量,以确保它们符合您希望它们在脚本中的该步骤 .
如果您对代码执行此操作,您将看到错过了针对循环的变量的计数器更改 . 所以它一直在寻找nRow最终成为“”但它仍然保持在它设置的任何地方 . 无限循环 . 我将其更改为下一个格式,但是6个为1,半打为另一个格式 .
欢迎来到VBA . 不要捅眼睛 . :-)