vba excel只复制按键ctrl + c上的可见单元格

时间:2013-04-03 09:58:50

标签: excel excel-vba vba

我有一个包含75列和数千行数据的Excel。在75列中,我使用5列来进行vba编码。这5列包含标志(01),我将基于该标志锁定相应行中的单元格(标志来自数据库)。由于用户不想要这些标志列,我只是隐藏了这些列,但是当用户尝试将数据从我的工作簿复制到另一个工作簿时,用户可以复制客户端不需要的隐藏列。

那么无论如何限制他们不要通过 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

限制用户不要复制隐藏列的任何想法。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

试试这个

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

注意:我使用了错误处理,这是必须的,因为用户可能会选择不连续的范围,如果没有完成错误处理,代码将会中断:)请参阅下面的屏幕截图

enter image description here