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

复制前

image

复制后

image

点击下载附件

以上是关于VBA 中怎么只保护指定的单元格或者列的主要内容,如果未能解决你的问题,请参考以下文章

Excel用宏vb命令怎指定某一列锁定,其他单元格可编辑与合并?

VBA Excel 2003 保护单元格点击

VBA 锁定有内容的单元格

vba中怎么遍历单元格中所有字符串

vba中怎么遍历单元格中所有字符串

EXCEL VBA中单元格发生改变触发事件,怎么指定某个单元格