VBA的Excel复制只有按键可见的单元格按Ctrl + C

我有一个75列和数千行的数据excel。 在75列中,我使用5列作为我的vba编码目的。 这5列保存标志( 01 ),我locking单元格在相应的行( 标志来自数据库 )的基础上。 由于用户不希望这些标志列我只隐藏这些列,但是当用户试图将数据从我的工作簿复制到另一个工作簿时,用户可以复制客户端不需要的隐藏列。

那么是否有限制他们不要复制隐藏的列通过VBA或任何设置? 其实对于这个问题,我认为是按Ctrl + C键,我试图改变Selection.Copy作为Selection.Range.SpecialCells(xlCellTypeVisible) 。 但是我得到一些错误,如wrong number of arguments or invalid property assignment

代码行是

 Private Sub Workbook_Open() Application.OnKey "^c", "Copy" End Sub Sub Copy() If Selection Is Nothing Then Else Selection.Copy = Selection.Range.SpecialCells(xlCellTypeVisible) End If 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 

:我已经使用了error handling,这是必须的,因为用户可能会select非连续的范围,如果error handling没有完成,代码将会中断。

在这里输入图像说明