Excel中的工作表复制导致运行时错误

问题描述

获取运行时错误,特别是复制工作表。它曾经可以工作,但不确定我在这里缺少什么。我正在使用v16.0和单个工作簿。这是代码的一部分:

Private Sub btnNewExchange_Click()
Worksheets("Exchange Master").copy After:=Worksheets("Exchange Master")

'copy the coefficients and freeze them into the current sheet

Worksheets("Exchange Master (2)").Unprotect
Worksheets("Exchange Master (2)").Range("D7:D18").Value = Worksheets("Exchange Master").Range("D7:D18").Value
Worksheets("Exchange Master (2)").Protect

' Rename the sheet
Worksheets("Exchange Master (2)").Select
Worksheets("Exchange Master (2)").Name = Format(Now(),"yyyy-MM-dd") & " Exchange"

UserForm1.Hide
Application.WindowState = xlMaximized
End Sub

解决方法

可以帮助您更明确地说明正在使用的对象。

如果仍然出现错误,则将错误的文本包含在问题中会有所帮助。

Private Sub btnNewExchange_Click()

    Dim ws As Worksheet,wb As Workbook
    
    'best to be explicit about the workbook you're working on
    Set wb = ActiveWorkbook 'or ThisWorkbook?
    Set ws = wb.Worksheets("Exchange Master")

    ws.Copy After:=ws

    With wb.Worksheets(ws.Index + 1)
        .Unprotect
        .Range("D7:D18").Value = ws.Range("D7:D18").Value
        .Protect
        .Name = Format(Now(),"yyyy-MM-dd") & " Exchange"
    End With

    UserForm1.Hide
    Application.WindowState = xlMaximized

End Sub