excel中使用vba如何能够实现如果我这个单元格里的内容是1则另一个单元格锁定,不允许修改,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel中使用vba如何能够实现如果我这个单元格里的内容是1则另一个单元格锁定,不允许修改,相关的知识,希望对你有一定的参考价值。

如果是2则又可以修改了

假定A1单元为1,B1锁定,A1变为2时解锁。以下代码能满足你的要求:

Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Address <> "$A$1" Then Exit Sub
   ActiveSheet.Unprotect
   If Target = 1 Then Range("B1").Locked = True
   If Target = 2 Then Range("B1").Locked = False
   ActiveSheet.Protect
End Sub

注意两点:一是代码不能写在模块里,就写在工作表代码区,二是在写代码前先将所有单元格解锁:

参考技术A 这个要代码的事件才能完成。工作表保护,可设密码,不过容易破解。 参考技术B Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$A$1" Then Exit Sub
    If Target = 1 Then
        ActiveSheet.Unprotect
        [a2].Locked = True
        ActiveSheet.Protect
    Else
        ActiveSheet.Unprotect
        [a2].Locked = False
        ActiveSheet.Protect
    End If
End Sub

如果a1=1则锁定a2

在EXCEL中,如何使用VBA设置单元格内指定字符串格式

参考技术A Sub
ss()
Dim
j
As
Long
j
=
InStr(Range("A1"),
"格式")
With
Range("A1")
.Font.FontStyle
=
"正常"
.
Characters
(Start:=j,
Length:=2).Font.FontStyle
=
"加粗"
End
With
End
Sub
这个代码可以让你的格式两个字在任意位置
如果你A1是固定的这几个字,那么一句话搞定
Range("A1")
.Characters(Start:=4,
Length:=2).Font.FontStyle
=
"加粗"
参考技术B 查找所有应用区域中包含“hello”字符串的
sub
test1()
dim
v
as
string
dim
r
as
range
v
=
"hello"
for
each
r
in
activesheet.usedrange
if
instr(1,
r,
v)
<>
0
then
msgbox
r.address
end
if
next
end
sub

以上是关于excel中使用vba如何能够实现如果我这个单元格里的内容是1则另一个单元格锁定,不允许修改,的主要内容,如果未能解决你的问题,请参考以下文章

使用 MergeArea 检测 VBA Excel 中的合并单元格

在EXCEL中,如何使用VBA设置单元格内指定字符串格式

请VBA高手帮忙,我要在EXCEL中插入一个控件,每次只要点击这个控件就能实现下面的功能

如何使用 VBA 根据活动工作表中的单元格自动填充 Excel 表单?

在EXCEL中,如何使用VBA设置单元格内指定字符串格式 三六零问答

excel vba如何查询某单元格所在行