将范围项从一个工作表复制到新创建的工作表时出现运行时错误

时间:2013-04-22 21:24:24

标签: excel-vba vba excel

我似乎无法将内容从一个工作表复制并粘贴到另一个工作表 - 我收到运行时错误,我不明白为什么......请赐教......

这是代码:

Dim cell As String

 For i = 2 To cat_lastRow
    Sheets("Sheet1").Select
    cell = ActiveSheet.Cells(i, cat_col).Value
    Sheets("skeleton").Range("A1:S21").Copy

    If Not worksheetExists(cell) Then
        ActiveWorkbook.Sheets.Add.Name = cell
    Else
        Sheets(cell).Cells.Clear
    End If

    Sheets(cell).Paste
    ...

 Next i

我查看代码直到Shees(单元格).Paste

实际上,如何将所有项目从一个工作表复制到另一个工作表 - 如果存在具有该名称的工作表,则将其清除,然后从头开始将内容粘贴到其中。

提前感谢...

2 个答案:

答案 0 :(得分:0)

......未经测试,但其他行动可能会丧失选择权。尝试将.Copy-line直接放在.Paste-line之前,然后给出起始单元格,如Sheets(cell).Range("A1").Paste或直接

Sheets("skeleton").Range("A1:S21").Copy Sheets(cell).Range("A1")

答案 1 :(得分:0)

包括您的问题,重新复制整个工作表;您可以复制整个工作表并粘贴到新工作表而不必先清除单元格,或者如果存在则删除工作表,然后复制所需的工作表并重命名:

Dim cell As String

For i = 2 To cat_lastRow
    Sheets("Sheet1").Select
    cell = ActiveSheet.Cells(i, 1).Value

    ' Turn off alert that you are deleting sheet
    Application.DisplayAlerts False
    ' Resume next on error if the sheet does not already exist
    On Error Resume Next
    Sheets(cell).Delete
    ' Rest your error handle
    On Error GoTo 0
    Sheets("skeleton").Copy after:=Sheets("Sheet3")
    ActiveSheet.Name = cell
 Next i

确保在代码末尾放置Application.DisplayAlerts True,并且在删除工作表后可能还需要更改错误。