尝试在 Excel 中运行 VBA amcro 时,我收到运行时错误 1004 - 此选择无效错误。
我四处寻找解决方案,到目前为止我尝试过的所有解决方案都没有成功(激活工作表,清除数据下方的行以确保有插入空间以及其他我不记得的空间)。
我正在尝试做的事情:
我们有一个数据集需要基于三列进行排序,不幸的是,内置排序无法按我们的意愿工作。三列是机器、班次和日期/时间。示例数据(按日期/时间排序):
Machine1 Days 02/05/2013 07:05
Machine2 Days 02/05/2013 07:05
Machine1 Days 02/05/2013 08:45
Machine1 Late 02/05/2013 15:05
我们希望对它进行排序,使其看起来像这样:
Machine1 Days 02/05/2013 07:05
Machine1 Days 02/05/2013 08:45
Machine2 Days 02/05/2013 07:05
Machine1 Late 02/05/2013 15:05
我的代码:
For rowCount = 4 To 5000
On Error GoTo nextLoop
Worksheets("Schedule").Activate
If ActiveSheet.Cells(rowCount, 1).Value = "" Then
Exit For
End If
If ActiveSheet.Cells(rowCount + 1, 1).Value = "" Then
Exit For
End If
thisMachine = ActiveSheet.Cells(rowCount, 2).Value
thisShift = ActiveSheet.Cells(rowCount, 4).Value
thisDay = Mid(ActiveSheet.Cells(rowCount, 5).Value, 1, 10)
pasteRow = rowCount + 1
If ActiveSheet.Cells(rowCount + 2, 4).Value <> thisShift Then
GoTo nextLoop
End If
For internalCount = rowCount + 1 To 5000
If ActiveSheet.Cells(internalCount, 4).Value <> thisShift Then
Exit For
End If
If Mid(ActiveSheet.Cells(internalCount, 5).Value, 1, 10) <> thisDay Then
Exit For
End If
If ActiveSheet.Cells(internalCount, 2).Value = thisMachine Then
Range(internalCount & ":" & internalCount).Cut
Range(pasteRow & ":" & pasteRow).Insert
pasteRow = pasteRow + 1
End If
Next internalCount
nextLoop:
Next rowCount
这适用于其中一个文件,但相同格式的另一个文件正在产生错误,并且调试会突出显示该行Range(pasteRow & ":" & pasteRow).Insert
作为问题。
数据首先按日期/时间(未显示)排序,这也使班次按顺序排列。然后它遍历表格的每一行,对于每一行它检查它下面的每一行。如果下面的行包含同一天和同一班次并使用同一台机器,则该行将被剪切并粘贴到正在读取的当前行或粘贴的前一行下方 ( pasteRow
)。这试图使机器保持时间顺序。如果日期或班次不匹配,则“内部”循环转义,程序移至下一行。
谁能明白为什么这会导致问题?或者为什么它适用于一组数据而不适用于第二组?
抱歉,如果不清楚,我已尽力解释,但很难用文字描述。
谢谢,
克里斯