分享

如何利用VBA代码,屏蔽EXCEL工作表的复制功能

 hjr231 2019-02-12

大家好,我们今日继续讲解VBA代码解决方案的第50讲内容:如何利用VBA代码,有效的屏蔽工作表的复制功能。为什么要进入这节的内容呢?因为有时我们并不希望用户对工作表中的数据进行复制粘贴操作,这些是我的私有财产,不能让人轻易的获得,那么该怎么办呢?此时我们可以把所有的复制功能都屏蔽掉,这里会利用三个知识点

一:CommandBars对象的FindControl方法。

应用于CommandBars对象的FindControl方法返回一个符合指定条件的CommandBarControl对象。语法如下:expression.FindControl(Type, Id, Tag, Visible, Recursive)

参数

a) expression是必需的,返回一个CommandBars对象。

b) Type是可选的,要查找控件的类型。

c) Id是可选的,要查找控件的标识符。

d) Tag是可选的,要查找控件的标记值。

e) Visible是可选,如果该值为True,那么只查找屏幕上显示的命令栏控件。默认值为False。

f) Recursive是可选的,如果该值为True,那么将在命令栏及其全部弹出式子工具栏中查找。此参数仅应用于CommandBar对象。默认值为False。

特别注意:如果没有控件符合搜索条件,那么FindControl方法返回Nothing。

二:利用CellDragAndDrop 属性设置单元格的拖放功能,如果允许使用单元格拖放功能,则该值为True,如果不允许则该值设为false.

三:关于应用于Application 对象的OnKey方法,这个知识点在我之前的文章中讲解过,这里给大家复习一下:应用于Application 对象的OnKey方法指定特定键或特定的组合键运行的过程,语法如下:expression.OnKey(Key, Procedure)

参数:a) expression是必需的,该表达式返回一个Application 对象。

b) Key是必需的,用于表示要按的键的字符串,具体请参阅VBA中的帮助。

c) Procedure是可选的,表示要运行的过程名称的字符串,如果将Procedure参数指定为空文本(''),则不发生任何操作。

下面我们看如何利用VBA代码达到屏蔽复制功能的作用,如下面的代码:

Dim CmdCtrls As CommandBarControls

Dim Cmd As CommandBarControl

Sub MyProCopy()

Set CmdCtrls = Application.CommandBars.FindControls(ID:=19)

For Each Cmd In CmdCtrls

Cmd.Enabled = False

Next

Application.CellDragAndDrop = False

Application.OnKey ('^c'), ''

End Sub

Sub MyStaCopy()

Set CmdCtrls = Application.CommandBars.FindControls(ID:=19)

For Each Cmd In CmdCtrls

Cmd.Enabled = True

Next

Application.CellDragAndDrop = True

Application.OnKey ('^c')

End Sub

代码解析:

第1、2行代码在模块顶部声明两个模块级的变量。

第3行到第10行代码ProCopy过程,屏蔽工作表中所有的复制功能。其中第4行到第7行代码使用FindControls方法将所有与'复制'相关的命令栏控件赋给变量CmdCtrls后将其Enabled设置为False。

第8行代码屏蔽单元格拖放功能,利用了应用于Application对象的CellDragAndDrop属性

第9行代码屏蔽<Ctrl+C>组合键功能。

第11行到第18行代码StaCopy过程,恢复所有的复制功能。

下面看代码窗口:

如何利用VBA代码,屏蔽EXCEL工作表的复制功能

其次:运行MyProCopy后:我这里按钮1是关联的MyProCopy,此时复制不起任何作用,在A1单元格中也不存在填充柄。

如何利用VBA代码,屏蔽EXCEL工作表的复制功能

最后我们运行MyStaCopy,我这里关联的是按钮2,如图,复制可以了,也出现了填充柄。

如何利用VBA代码,屏蔽EXCEL工作表的复制功能

今日内容回向:

1 如何做到复制不起作用呢?大概的思路是怎么样的?

2 本文讲到了三个知识点,读者是否清楚了呢?

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多