1

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

那么无论如何限制他们不要通过VBA或任何设置复制隐藏的列?实际上,对于这个问题,我认为在 的按键上是什么样的Ctrl + C,我尝试将 as 更改Selection.CopySelection.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

任何限制用户不要复制隐藏列的想法。任何帮助将不胜感激。

4

1 回答 1

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

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

在此处输入图像描述

于 2013-04-03T10:13:28.923 回答