Excel 2007 简单复制和粘贴 vba 在 excel 2016 中不起作用

Excel 2007 simple copy and paste vba not working in excel 2016

我整理了一个审计工作簿,它应该将一些隐藏的单元格复制并粘贴到一个隐藏的数据存储 sheet 中,然后隐藏 sheet 中的集体数据用于 KPI 报告。

问题是我在 Excel 2007 年将它放在一起,它在其中完美运行,但现在需要在 Excel 2016 年使用它。

我是运行来自按钮的宏,如果按下按钮它会复制数据并选择隐藏的字段sheet但不会粘贴,也不会出现错误对话框.

当我在 vba 编辑器中单步执行代码时,它工作正常,但不是从按钮,尽管按钮链接到代码。我有点迷茫或不知道如何更正代码。

代码如下:

Sub CopyPhoneAuditToDB()
'
'
' Copy Phone Audit To DB

'
    Application.ScreenUpdating = False
    Sheets("Data Phone").Visible = xlSheetVisible
    Sheets("Data Phone").Unprotect
    Range("E49:T49").Select
    Selection.Copy
    Sheets("Data Phone").Select
    Range("A2").Select
    Cells(Rows.Count, "A").End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveSheet.Protect
    Sheets("Phone Audit").Select
    Range("H5:J5").Select
    Sheets("Data Phone").Visible = xlSheetVeryHidden
    ActiveWorkbook.Save
End Sub

请告诉我这是否适合您:

Option Explicit

Sub CopyPhoneAuditToDB()

Application.ScreenUpdating = False

With Sheets("Data Phone")
    .Visible = xlSheetVeryHidden
    .Unprotect
    Sheets("Phone Audit").Range("E49:T49").Copy
    .Cells(.Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues, _
        Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    .Protect
End With

With Sheets("Phone Audit")
    .Activate
    .Range("H5:J5").Select
End With

Application.ScreenUpdating = True
ActiveWorkbook.Save

End Sub

我发现了问题,其中 Sheets("Data Phone").Visible = xlSheetVisible Sheets("Data Phone").Unprotect 将焦点从 sheet 转移到了 运行 来自 Phone Audit 它很可能是在复制 E49:T49 来自 Data Phone sheet.

请参阅以下代码,其中包含一个新行以将焦点带回 Phone Audit sheet。

Sub CopyPhoneAuditToDB()
'
'
' Copy Phone Audit To DB

'
    Application.ScreenUpdating = False
    Sheets("Data Phone").Visible = xlSheetVisible
    Sheets("Data Phone").Unprotect
    Sheets("Phone Audit").Activate '***************
    Range("E49:T49").Select
    Selection.Copy
    Sheets("Data Phone").Activate
    Range("A2").Select
    Cells(Rows.Count, "A").End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveSheet.Protect
    Sheets("Phone Audit").Activate
    Range("H5:J5").Select
    Sheets("Data Phone").Visible = xlSheetVeryHidden
    ActiveWorkbook.Save
End Sub

干杯

约翰