我有一个包含75列和数千行数据的Excel。在75列中,我使用5列来进行vba编码。这5列包含标志(0
或1
),我将基于该标志锁定相应行中的单元格(标志来自数据库)。由于用户不想要这些标志列,我只是隐藏了这些列,但是当用户尝试将数据从我的工作簿复制到另一个工作簿时,用户可以复制客户端不需要的隐藏列。
那么无论如何限制他们不要通过 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
限制用户不要复制隐藏列的任何想法。非常感谢任何帮助。
答案 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
注意:我使用了错误处理,这是必须的,因为用户可能会选择不连续的范围,如果没有完成错误处理,代码将会中断:)请参阅下面的屏幕截图