Excel VBA-复制粘贴选项卡导致错误

时间:2018-07-01 03:40:00

标签: excel vba copy-paste

我正在编写一个宏,以在文件中创建一个新标签页,对其进行命名,然后从现有的模板标签页中进行复制。这样做时,会出现一个弹出框,搜索标题为“ Update values:wbname.xlsm”的文件,然后我必须将其取消。我不确定为什么会发生此错误(尽管该选项卡使用了许多间接公式,以表明其价值),但是如果有关于如何防止此弹出框或如何将其关闭到代码中的解释,那将是错误的” d会很有帮助。

此外,我添加了第二个复制粘贴部分,因为最初没有通过列宽,但这还会导致运行时错误1004,提示“所有合并的单元格都必须具有相同的大小。如果有更好的方法,复制此内容,我将不胜感激,但否则我想我会“在下一个错误恢复时进行”。

代码如下:

TabName = InputBox("Please enter your testing date?") 
ActiveWorkbook.Sheets.Add(After:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)).Name = TabName
Sheets("Template").Range("A1:BZ300").Copy Destination:=Sheets(TabName).Range("A1")
Sheets("Template").Range("A1:BZ300").Copy
With Sheets(TabName).Range("A1")
    .PasteSpecial xlPasteColumnWidths
    .PasteSpecial xlPasteValues, , False, False
    .PasteSpecial xlPasteFormats, , False, False
    .Cells(1).Select
    Application.CutCopyMode = False
End With
Calculate

1 个答案:

答案 0 :(得分:0)

我将假设A1:BZ300是模板工作表的整个使用范围。在这种情况下,只需复制整个模板工作表,然后将公式解析为其值即可。

您可以在操作期间使用UpdateLinks = xlUpdateLinksNever暂时挂起。

Dim tabName As String, oldUL As Long

tabName = InputBox("Please enter your testing date?")

With ThisWorkbook
    oldUL = .UpdateLinks
    .UpdateLinks = xlUpdateLinksNever

    .Worksheets("template").Copy After:=.Worksheets(.Worksheets.Count)
    With .Worksheets(.Worksheets.Count)
        .Name = tabName
        .UsedRange.Cells = .UsedRange.Cells.Value
        .Cells(1).Select
    End With

    .UpdateLinks = oldUL
End With