复制单元格匹配工作表名称的行会将下标超出范围(错误9)

时间:2016-04-10 18:37:40

标签: excel vba excel-vba

我在这个论坛上搜索了很长时间并且学到了很多东西。但是,我现在遇到一个容易修复的问题,我想,但是我太盲目了,看不到合适的解决方案。

我有一张超过50k行的表格,其中也包含供应商的编号,因此这些编号恰好是重复的。 我有一个vba宏,它为每个供应商编号创建一个新的工作表,没有重复,所以这不是问题。 但是,我想将行的数据复制到工作表中,该工作表等于该行中出现的供应商编号。

供应商编号在A栏中。因此,如果第2行的供应商编号为10,则将该行复制到工作表" 10",第3行将编号14复制到工作表" 14" ,第4行的第10页为第10页,第10页为第3页等等。

我使用了我在这里找到的以下代码并重新改编了一下。

Sub CopyRows()

Dim DataSht As Worksheet, DestSht As Worksheet

Set DataSht = Sheets("All Data")

RowCount = DataSht.Cells(Cells.Rows.Count, "A").End(xlUp).Row

For i = 2 To RowCount

DataSht.Range("A" & i).EntireRow.Copy
Set DestSht = Sheets(DataSht.Range("A" & i).Value)
DestLast = DestSht.Cells(Cells.Rows.Count, "A").End(xlUp).Row
DestSht.Range("A" & DestLast + 1).Paste

Next i

End Sub

然而,这行上的下标超出范围错误: 设置DestSht =表格(DataSht.Range(" A"& i).Value)

1 个答案:

答案 0 :(得分:0)

试试这个:

For i = 2 To RowCount      
    Set DestSht = Sheets(CStr(DataSht.Range("A" & i)))
    DestLast = DestSht.Cells(Cells.Rows.Count, "A").End(xlUp).row
    DataSht.Range("A" & i).EntireRow.Copy Destination:=DestSht.Range("A" & DestLast + 1)
Next I

自:

  • CStr功能指向Sheets("12")

  • CstrSheets(12)指向<label> <input type="checkbox" value="1" name="2[]"> " Horror" </label> ,即工作簿中的第12张,可能不是您想要或不在的那张。