在excel里利用vba怎么对指定单元格,或区域单元格保护

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在excel里利用vba怎么对指定单元格,或区域单元格保护相关的知识,希望对你有一定的参考价值。

首先要知道,要保护一个单元格不能编辑,需要满足两个条件,第一个是设置单元格格式->保护->锁定要勾选,然后整个表要锁定。
解决思路如下:
1.
定义目标表 Set
sh
=
Sheets("sheet1"),可以修改表格名称
2.
先解锁整个表sh.Unprotect
3.
选择所有的单元格,并设置单元格格式->保护->取消勾选锁定
sh.Cells.Select
Selection.Locked
=
False
4.
选择目标单元格区域,并设置单元格格式->保护->勾选锁定要
sh.Range("B2:E7").Select
这里可以改变目标区域B2:E7
Selection.Locked
=
True
5.
锁定整个表sh.Protect
完整代码:
Sub ProtectRange()
'Set sh = ActiveSheet
Set sh = Sheets("sheet1")
'解锁表
sh.Unprotect
' 选择所有的单元格并设置不锁定
sh.Cells.Select
Selection.Locked = False
' 选择目标单元格B2:E7,并设置锁定
sh.Range("B2:E7").Select
Selection.Locked = True
' 锁定表
sh.Protect
End Sub效果图:
参考技术A 同时按Alt和
F11
进入宏界面,
点菜单
的插入,模块,粘贴如下代码:
Sub
test()
Cells.Locked
=
True
Range("G5:
G6
,
H5,
G10
:
H13
").Locked
=
False
ActiveSheet.Protect
"12345"
End
Sub
密码自己改,运行此宏(直接按F5)就可以了。

excel2007 VBA中如何引用指定的单元格地址?

A列为销量,D1为单价。想要在B列金额中写入A列乘以D1单元格的公式
例如:B2中写入公式 =A2*$D$1
请问公式中如何引用指定的单元格地址
另外: =RC[-1]*D1 这个公式为什么不成立? 运行公式就变成了 =A1* ’D1' 把D1给加单引号呢?

以引用单元格A1为例,VBA中有如下几种方式:
sub main()
msgbox cells(1,1)\'第一种表示A1的方法
msgbox cells(1,"A")\'第二种表示A1的方法
msgbox range("A1")\'第三种表示A1的方法
end sub

关于Excel中单元格地址引用相关:
在同一工作表中引用,只需单元格地址即可,即该单元格列行所在位置,列为首行所视英文字母,行为阿拉伯数字;在不同工作表中引用,则需表明所引用的工作表名,格式为“工作表名!单元格地址”,即这一引用是其他工作表中某单元格数据。
参考技术A D1 单元格用 R1C1 格式来描述的话就是 第 1 行 第 4 列,即 R1C4,所以,公式应该写成:=RC[-1]*R1C4本回答被提问者采纳 参考技术B

引用单元格的方法比较多,列举如下,

1. 引用单元格A1
[A1] 或 Range("A1") 或 cells(1,1)

2. 引用连续单元格A1:B3

参考技术C With Sheet1
'或者用:.Cells(2, 2) = .Cells(2, 1) * .Cells(1, 4)
.Range("B2") = .Range("A2") * .Range("D1")
End With
参考技术D =RC[-1]*R1C4追问

这样写只是相对引用,如果用VBA运行到第二行就变成了A3*D2了

追答

不会的,你可以试一试

Sub test()
For i = 2 To 5
Sheet1.Cells(i, 2) = "=RC[-1]*R1C4"
Next i
End Sub

追问

恩恩,已经明白了。还是谢谢你!

追答

不客气

以上是关于在excel里利用vba怎么对指定单元格,或区域单元格保护的主要内容,如果未能解决你的问题,请参考以下文章

如何用vba实现在EXCEL固定区域坐标内点击单元格,显示日期控件

如何在 Excel 中使用 OFFSET 函数

Excel excel函数参数中的range和reference有啥区别

VBA 中怎么只保护指定的单元格或者列

[Excel VBA]单元格区域引用方式的小结

用vba给Excel单元格赋值