VBA的Excel复制只有可见的单元格上键按Ctrl + C为受保护的工作表

我试图replaceCTRL + C,所以它只会复制受保护的工作表上的可见单元格。 试图解决这个问题我偶然发现这个post( VBA的Excel复制只有可见的单元格按键Ctrl + C )

下面的代码(由Siddharth-Routbuild议)可以工作,但只适用于不受保护的工作表:

Private Sub Workbook_Open() Application.OnKey "^c", "Copy" End Sub Sub Copy() Dim rng As Range On Error GoTo Whoa If Not Selection Is Nothing Then Set rng = Selection.Cells.SpecialCells(xlCellTypeVisible) rng.Copy End If LetsContinue: Exit Sub Whoa: MsgBox Err.Description, vbCritical, "Error Number : " & Err.Number Resume LetsContinue End Sub 

我尝试了解保护,复制,然后重新保护,但删除了副本。 我需要最后的表格来保护。 任何帮助,将不胜感激。

啊! 从过去的爆炸:P

您需要在复制之前取消保护和保护。 另外我正在使用ActiveSheet进行演示。 如果需要,将其更改为相关的表格。

这是你正在尝试?

 Sub Copy() Dim rng As Range Dim MyPassword As String '~~> Change password as applicable MyPassword = "Sid" On Error GoTo Whoa If Not Selection Is Nothing Then ActiveSheet.Unprotect MyPassword Set rng = Selection.Cells.SpecialCells(xlCellTypeVisible) ActiveSheet.Protect MyPassword rng.Copy End If LetsContinue: Exit Sub Whoa: MsgBox Err.Description, vbCritical, "Error Number : " & Err.Number Resume LetsContinue End Sub