大家好,,我們今日繼續(xù)講解VBA代碼解決方案的第50講內(nèi)容:如何利用VBA代碼,有效的屏蔽工作表的復(fù)制功能,。為什么要進(jìn)入這節(jié)的內(nèi)容呢,?因為有時我們并不希望用戶對工作表中的數(shù)據(jù)進(jìn)行復(fù)制粘貼操作,這些是我的私有財產(chǎn),,不能讓人輕易的獲得,,那么該怎么辦呢,?此時我們可以把所有的復(fù)制功能都屏蔽掉,這里會利用三個知識點 一:CommandBars對象的FindControl方法,。 應(yīng)用于CommandBars對象的FindControl方法返回一個符合指定條件的CommandBarControl對象,。語法如下:expression.FindControl(Type, Id, Tag, Visible, Recursive) 參數(shù) a) expression是必需的,返回一個CommandBars對象,。 b) Type是可選的,,要查找控件的類型。 c) Id是可選的,,要查找控件的標(biāo)識符,。 d) Tag是可選的,要查找控件的標(biāo)記值,。 e) Visible是可選,,如果該值為True,那么只查找屏幕上顯示的命令欄控件,。默認(rèn)值為False,。 f) Recursive是可選的,如果該值為True,,那么將在命令欄及其全部彈出式子工具欄中查找,。此參數(shù)僅應(yīng)用于CommandBar對象。默認(rèn)值為False,。 特別注意:如果沒有控件符合搜索條件,,那么FindControl方法返回Nothing。 二:利用CellDragAndDrop 屬性設(shè)置單元格的拖放功能,,如果允許使用單元格拖放功能,,則該值為True,如果不允許則該值設(shè)為false. 三:關(guān)于應(yīng)用于Application 對象的OnKey方法,,這個知識點在我之前的文章中講解過,,這里給大家復(fù)習(xí)一下:應(yīng)用于Application 對象的OnKey方法指定特定鍵或特定的組合鍵運行的過程,語法如下:expression.OnKey(Key, Procedure) 參數(shù):a) expression是必需的,,該表達(dá)式返回一個Application 對象,。 b) Key是必需的,用于表示要按的鍵的字符串,,具體請參閱VBA中的幫助,。 c) Procedure是可選的,表示要運行的過程名稱的字符串,,如果將Procedure參數(shù)指定為空文本(''),,則不發(fā)生任何操作。 下面我們看如何利用VBA代碼達(dá)到屏蔽復(fù)制功能的作用,,如下面的代碼: 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過程,屏蔽工作表中所有的復(fù)制功能,。其中第4行到第7行代碼使用FindControls方法將所有與'復(fù)制'相關(guān)的命令欄控件賦給變量CmdCtrls后將其Enabled設(shè)置為False,。 第8行代碼屏蔽單元格拖放功能,利用了應(yīng)用于Application對象的CellDragAndDrop屬性 第9行代碼屏蔽<Ctrl+C>組合鍵功能,。 第11行到第18行代碼StaCopy過程,,恢復(fù)所有的復(fù)制功能。 下面看代碼窗口: 其次:運行MyProCopy后:我這里按鈕1是關(guān)聯(lián)的MyProCopy,,此時復(fù)制不起任何作用,在A1單元格中也不存在填充柄,。 最后我們運行MyStaCopy,我這里關(guān)聯(lián)的是按鈕2,,如圖,,復(fù)制可以了,也出現(xiàn)了填充柄,。 今日內(nèi)容回向: 1 如何做到復(fù)制不起作用呢?大概的思路是怎么樣的,? 2 本文講到了三個知識點,,讀者是否清楚了呢? |
|