VBA 中怎么只保护指定的单元格或者列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA 中怎么只保护指定的单元格或者列相关的知识,希望对你有一定的参考价值。
VBA 可以保护一个Workbook,但是目的是保护指定的列,或者保护整个Book但是有2列不保护 如 A列和B列,
还一个问题,我只想保护指定的单元格,我该怎么做?
希望指教,谢谢
法一:
你可以按如下步骤录制一个宏看看:
1、选定所有单元格,点“格式/单元格”,点“保护”,清除“锁定”前面的“√”。
2、选定你需要锁定的单元格区域,点“格式/单元格”,点“保护”,在“锁定”前面加上“√”。
3、点“工具/保护/保护工作表”,输入两次密码即可。
一个例子:
With Worksheets("test")
.Cells.Locked = False
.Cells.FormulaHidden = False
.Range("A:A,D:D").Locked = True '锁住A列与D列
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
保护除A列和B列外的整个Book,要用到反向选择的技巧。请参见下面参考资料的链接。
法二:
使用worksheet的selectionChange事件,在用户点击需要保护的单元格区域时立即跳转到其他单元格。具体请参考:
http://www.officefans.net/cdb/viewthread.php?tid=87056
参考资料:http://club.excelhome.net/thread-11321-1-1.html
参考技术A 选中A列和B列,设置单元格属性,去掉保护选项卡中的勾;保护工作表,设置密码:工具-保护-保护工作表。 参考技术B cells(a,b).lock=false
VBA复制单元格数据有效性
单元格内设置了有效性,通过VBA怎么去复制呢?代码如下:
Public Sub 复制单元格批注() Dim range1 As range Dim range2 As range \'清除G列 Columns("G:G").Clear Set range1 = range("A1:A2") \'指定要复制的单元格区域 Set range2 = range("D1") \'指定要复制的位置(左上角单元格 range1.Copy range2.PasteSpecial Paste:=xlPasteValidation \'复制有效性 \'回收内存 Set range1 = Nothing Set range2 = Nothing End Sub
复制前
复制后
以上是关于VBA 中怎么只保护指定的单元格或者列的主要内容,如果未能解决你的问题,请参考以下文章