Note: The other languages of the website are Google-translated. Back to English

如何根据Excel中另一个单元格中的值锁定或解锁单元格?

在某些情况下,您可能需要根据另一个单元格中的值来锁定或解锁单元格。 例如,如果单元格A1包含值“ Accepting”,则需要将范围B4:B1解锁。 并在单元格A1包含“拒绝”值时被锁定。 您如何才能做到这一点? 本文可以为您提供帮助。

使用VBA代码根据另一个单元格中的值锁定或解锁单元格


使用VBA代码根据另一个单元格中的值锁定或解锁单元格

下面的VBA代码可以帮助您根据Excel中另一个单元格中的值锁定或解锁单元格。

1.右键单击工作表选项卡(带有您需要根据另一个单元格中的值锁定或解锁单元格的工作表),然后单击 查看代码 从右键单击菜单中。

2.然后将以下VBA代码复制并粘贴到“代码”窗口中。

VBA代码:根据另一个单元格中的值锁定或解锁单元格

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("A1") = "Accepting" Then
        Range("B1:B4").Locked = False
    ElseIf Range("A1") = "Refusing" Then
        Range("B1:B4").Locked = True
    End If
End Sub

3。 按 其他 + Q 同时关闭按键 Microsoft Visual Basic应用程序 窗口。

从现在开始,当您在单元格A1中输入值“ Accepting”时,范围B1:B4将被解锁。

在单元格A1中输入值“拒绝”时,指定范围B1:B4将自动锁定。


相关文章:


最佳办公效率工具

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及您以前使用过的任何东西; 加密单元 带密码 创建邮件列表 并发送电子邮件...
  • 超级公式栏 (轻松编辑多行文本和公式); 阅读版式 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不会丢失数据; 拆分单元格内容; 合并重复的行/列...防止细胞重复; 比较范围...
  • 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
  • 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
  • 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级滤镜 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
  • 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
  • 超过300种强大功能. 支持 Office / Excel 2007-2021 和 365。支持所有语言。 在您的企业或组织中轻松部署。 完整功能 30 天免费试用。 60 天退款保证。
kte选项卡201905

Office选项卡为Office带来了选项卡式界面,使您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
officetab底部
按评论排序
注释 (52)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
如何锁定/解锁变量单元格,例如当单元格为 [=INDEX(A16:L35,MATCH(W5,A16:A35,0),MATCH("PAY",A16:L16,0))]
该评论由网站上的主持人最小化
我想要一个我无法弄清楚的简单 VBA 命令,请帮忙
如果单元格 A1 为 Balnk,则单元格 A2 被锁定,如果单元格 A1 包含任何值,则单元格 A2 被解锁
同样,如果单元格 A2 为空白,则单元格 A3 被锁定,如果单元格 A2 包含任何值,则单元格 A3 被解锁
依此类推,根据工作表任何部分的要求,尽可能多的单元格。
该评论由网站上的主持人最小化
嗨,我正在尝试实现这一点,但是如果工作表已受到保护,我收到一个错误,即 VBA 无法设置 Range 类的 Locked 属性。 取消保护工作表将否定被锁定的单元格。 如何解决这个问题? 谢谢你的帮助。
该评论由网站上的主持人最小化
你解决了吗? 我也有同样的问题
该评论由网站上的主持人最小化
亲爱的备忘录,
请尝试以下 VBA 代码。

私有子 Worksheet_Activate()
如果不是 ActiveSheet.ProtectContents 则
Range("A1").Locked = False
Range("B1:B4").Locked = False
结束如果
END SUB
Private Sub Worksheet_SelectionChange(作为范围的ByVal目标)
调暗 xRg 作为范围,xRgA 作为范围
出错时继续下一步
Application.EnableEvents = False
设置 xRg = Range("B1:B4")
设置 xRgA = Range("A1")
If Intersect(Target, xRg).Address <> Target.Address _
或者 xRgA = "接受" 然后
Application.EnableEvents = True
退出小组
ElseIf ActiveSheet.ProtectContents _
和相交(目标,xRg)=目标_
然后 xRgA.Value = "拒绝"
xRgA.选择
结束如果
Application.EnableEvents = True
END SUB
该评论由网站上的主持人最小化
您将需要使用工作簿中的界面行,因此当您打开文件时,它会保护工作表但允许宏进行更改;

Private Sub Workbook_Open() '这进入“ThisWorkbook”

Worksheets("Order Tool").Protect Password:="Pwd", UserInterFaceOnly:=True

END SUB
该评论由网站上的主持人最小化
亲爱的蚂蚁,
下面的 VBA 代码可以帮助您解决这个问题。 感谢您的评论。

私有子 Worksheet_Activate()
如果不是 ActiveSheet.ProtectContents 则
Range("A1").Locked = False
Range("B1:B4").Locked = False
结束如果
END SUB
Private Sub Worksheet_SelectionChange(作为范围的ByVal目标)
调暗 xRg 作为范围,xRgA 作为范围
出错时继续下一步
Application.EnableEvents = False
设置 xRg = Range("B1:B4")
设置 xRgA = Range("A1")
If Intersect(Target, xRg).Address <> Target.Address _
或者 xRgA = "接受" 然后
Application.EnableEvents = True
退出小组
ElseIf ActiveSheet.ProtectContents _
和相交(目标,xRg)=目标_
然后 xRgA.Value = "拒绝"
xRgA.选择
结束如果
Application.EnableEvents = True
END SUB
该评论由网站上的主持人最小化
嗨,

是否有可能让这个 VBA 锁定一组单元格/基于此解锁另一组单元格? 例如范围 B1:B4 被解锁,C1:C4 被锁定以“接受”,然后 B1:B4 被锁定,C1:C4 被解锁以“拒绝”?


谢谢,
基督教
该评论由网站上的主持人最小化
亲爱的基督徒,
您的工作表是否受到保护?
该评论由网站上的主持人最小化
请有人可以帮我解决以下问题。
我想在一张纸上插入学生的照片,根据他们的名字出现在另一张纸上
创建导航平面以协助用户
将特定工作表分配给用户
为工作簿创建界面
创建登录页面
该评论由网站上的主持人最小化
亲爱的狮子座,
有关 Excel 的任何问题,请随时在我们的论坛中发帖: https://www.extendoffice.com/forum.html.
您将从我们的 Excel 专业人员那里获得更多有关 Excel 的支持。
该评论由网站上的主持人最小化
你好,

我已经尝试了您的代码并进行了一些编辑,但我无法弄清楚我在这里做错了什么?

私人子Worksheet_Change(按目标的ByVal目标)
如果范围(“A40”)<>“”那么
Range("D40:E40").Locked = False
ElseIf Range("A40") = "" 那么
Range("D40:E40").Locked = True
结束如果
END SUB


我的想法是如果里面什么都没有(A40)。 然后我想被VBA锁定。 如果 A40 包含某些东西,那么我希望它被解锁。 我希望你能看到它的意义。


问候克里斯托弗
该评论由网站上的主持人最小化
美好的一天,
您的代码没有任何问题。 这对我来说很有用。
该评论由网站上的主持人最小化
你好。 我也无法使此代码正常工作。 它完全没有任何作用。 好像连代码都不存在?? 我对 VBA 很陌生,对它有基本的了解。 这段代码是按原样运行的,还是必须添加一些东西才能运行? 或者变成一个宏(我真的不明白为什么,因为那是指令的记录,根据我对它们的理解)
该评论由网站上的主持人最小化
如果我想在单元格 B1、B2、B3 上锁定特定文本(让我们说“P”),我想锁定单元格 E1、E2、E3 的代码是什么...... ..............分别。

提前致谢
该评论由网站上的主持人最小化
美好的一天
请尝试以下 VBA 脚本。

私人子Worksheet_Change(按目标的ByVal目标)
如果 Target.Count = 1 那么
如果 Target.Address = Range("A1").Address And Target.Value = "A" Then
Range("B1").Locked = True
ElseIf Target.Address = Range("A2").Address And Target.Value = "A" Then
Range("B2").Locked = True
ElseIf Target.Address = Range("A3").Address And Target.Value = "A" Then
Range("B3").Locked = True
结束如果
结束如果
END SUB
该评论由网站上的主持人最小化
美好的一天!
Мне тоже необходимо заблокировать значение, но только в одной ячейке в зависимости от значения в другой, я попробовала использовать код в комментарии выше, но он не работает(оставила только один параметр для блокировки), но он у меня не работает - при этом нет сообщения об ошибке, ячейка, которая должна быть заблокирована - просто не блокируется, остается активной。 В чем может быть причина?

Вот код, который я использовала:

私人子Worksheet_Change(按目标的ByVal目标)
如果 Target.Count = 1 那么
如果 Target.Address = Range("C9").Address And Target.Value = "согласно плану" 那么
范围(“C10”)。锁定=真
结束如果
END SUB
该评论由网站上的主持人最小化
嗨鬼,
对不起,我不太明白你的意思。 为清楚起见,请附上包含您的数据和所需结果的示例文件或屏幕截图。
该评论由网站上的主持人最小化
你好! 需要一些建议。
有没有办法不允许更新一个单元格,除非它满足另一个单元格的条件?
示例:如果单元格 A 未更新,则不允许我更改单元格 B 的值以完成。

感谢反馈。
谢谢!
该评论由网站上的主持人最小化
亲爱的玛吉,
请尝试以下 VBA 代码。

将 PreVal 调暗为字符串
将 NextVal 调暗为字符串
私有子 Worksheet_Activate()
PreVal = 范围(“A1”)
NextVal = 范围(“A1”)
END SUB
私人子Worksheet_Change(按目标的ByVal目标)
If (Target.Count = 1) And (Target.Address = "$A$1") Then
NextVal = 范围(“A1”)
结束如果
END SUB
Private Sub Worksheet_SelectionChange(作为范围的ByVal目标)
如果 Target.Count = 1 那么
如果 Target.Address = "$A$1" 那么
PreVal = 范围(“A1”)
ElseIf (Target.Address = "$B$1") 然后
如果 PreVal = NextVal 那么
Application.EnableEvents = False
范围(“A1”)。选择
Application.EnableEvents = True
结束如果
结束如果
结束如果
END SUB
该评论由网站上的主持人最小化
有人可以纠正这个吗>>>

私人子Worksheet_Change(按目标的ByVal目标)
对于i = 7到100
If Range("Cells(D, i)") = "Loan" Then
Range("Cells(V, i):Cells(X, i)").Locked = True
ElseIf Range("Cells(D, i)") = "Savings" Then
Range("Cells(Q, i):Cells(U, i)").Locked = True
Range("Cells(W, i):Cells(X, i)").Locked = True
ElseIf Range("Cells(D, i)") = "ShareCap" Then
Range("Cells(Q, i):Cells(U, i)").Locked = True
Range("Cells(V, i)").Locked = True
结束如果
接下来,我
END SUB
该评论由网站上的主持人最小化
你好! 有人能帮我吗? 我必须锁定/冻结一个单元格。 该单元格链接到另一个单元格,并且其值每分钟都在变化。 我要做的是将值保持一定分钟/小时。 我怎样才能做到这一点而不复制它并将其粘贴为一个值?
该评论由网站上的主持人最小化
亲爱的米拉,
抱歉帮不上忙,您可以在我们的论坛中发布您的问题: https://www.extendoffice.com/forum.html 从我们的专业人员那里获得更多的 Excel 支持。
该评论由网站上的主持人最小化
嗨,
我对此真的很陌生。
我一直在尝试将发票系统放在excel中。
我创建了 3 张纸。
1. 发票模板(发票)- 只是每周发送给我的代理的通用发票。

2.准确的数据表(数据表)-发票可以读取公司名称地址等,因此如果有任何更改,发票将自动更新。

3. 确切地说是日历选项卡(Calendar 2018) - 在发票模板中引用,并将相应的日期和发票编号放在实际发票上。

我想做的事。
日历选项卡将是我的主页,我为每周添加了一个状态下拉单元格,其中包含“活动”和“关闭”选项。 如果相应的单元格设置为“关闭”,我想锁定整个“发票”选项卡。

我希望你们明白我想要做什么。
感谢在前进。
该评论由网站上的主持人最小化
亲爱的安藤维尔斯。
下面的 VBA 代码可以帮助你。 请将代码放入日历 2018 的工作表代码窗口中,将 A1 更改为您的下拉单元格。 谢谢你。

私人子Worksheet_Change(按目标的ByVal目标)
将 xRg 调暗为范围
出错时继续下一步
设置 xRg = 相交(目标,范围(“A1”))
如果 xRg 什么都不是,则退出 Sub
如果 Target.Validation.Type >= 0 那么
如果 Target.Value = "已关闭" 则
Sheets("数据表").Protect
ElseIf xRg.Value = "Active" Then
Sheets("数据表").Unprotect
结束如果
结束如果
END SUB
该评论由网站上的主持人最小化
我在 excel 模板中准备了一个仓库库存管理。要交付库存,我必须发出一个闸门通行证。我希望每个闸门通行证,相应的数据将在每日库存页面中更新。随着闸门通行证序列号的更改,行将被锁定,下一个将被填满。
该评论由网站上的主持人最小化
美好的一天,
如果您可以在此处上传您的工作簿,那就太好了。 感谢您的评论。
该评论由网站上的主持人最小化
你能指导我这里有什么问题吗? 先感谢您。

私人子Worksheet_Change(按目标的ByVal目标)
如果 Range("K:K") = "OVER STOCK" 那么
Range("S:S").Locked = True
ElseIf Range("K:K") = "SLOW MOVING" Then
Range("S:S").Locked = True
ElseIf Range("K:K") = "NORMAL" Then
Range("S:S").Locked = False
ElseIf Range("K:K") = "SHORTAGE" Then
Range("S:S").Locked = False
结束如果
END SUB
该评论由网站上的主持人最小化
你能告诉我如何纠正这个问题吗? 先感谢您。

私人子Worksheet_Change(按目标的ByVal目标)
If Range("A:A") = "SLOW MOVING" Then
Range("B:B").Locked = True
ElseIf Range("A:A") = "OVER STOCK" Then
Range("B:B").Locked = True
ElseIf Range("A:A") = "NORMAL" Then
Range("B:B").Locked = False
结束如果
END SUB
该评论由网站上的主持人最小化
不是 VB 专家,我会说你有太多的“Elseif”——如果你把它们都改成 IF,除了最后一个,那么希望这会奏效。
基本上如果 X 这样做,如果 Y 这样做,如果 Z 这样做,如果这些都没有 - 这样做。
该评论由网站上的主持人最小化
如果我想锁定一个单元格块(第 6、7 和 8 行/字母 D 到 U 以及单元格 F5 和 J5)并在我在单元格 E5 中输入“X”时让它们解锁,代码会怎样? 提前致谢!
该评论由网站上的主持人最小化
嗨,MitchyII,
您的意思是指定的单元格块已提前手动锁定,只是想通过在单元格 E5 中键入“X”来解锁它们?
如果从单元格 E5 中删除“X”,您是否要再次锁定范围?
我需要问题的更多细节。
感谢您的评论。
该评论由网站上的主持人最小化
嗨 Mitchyll(或任何人),以 Crystal 为基础。 我已手动锁定所有单元格,并根据 G 列中的信息,我希望它们保持锁定或解锁状态。 仅当“c/p”放置在 G 列的前一个单元格中时,才应解锁 H 列中的示例单元格
该评论由网站上的主持人最小化
当单元格达到某个值时,是否可以锁定单元格?
该评论由网站上的主持人最小化
您好,请问您是什么原因导致无法使用?

私人子Worksheet_Change(按目标的ByVal目标)
If Range("A3:A37").Value <> "" Then
Range("B3:B37").Locked = True
ElseIf Range("A3:A37") = "" 那么
Range("B3:B37").Locked = False
结束如果

If Range("B3:B37").Value <> "" Then
Range("A3:A37").Locked = True
ElseIf Range("B3:B37") = "" 那么
Range("A3:A37").Locked = False
结束如果

END SUB


非常感谢您提前!
该评论由网站上的主持人最小化
Hi
我刚刚尝试使用上面的代码
当我尝试使用它时,它会显示类型 13 错误。
你能帮我解决这个问题吗?

谢谢
该评论由网站上的主持人最小化
嗨,
您使用的是哪个 Excel 版本?
该评论由网站上的主持人最小化
hi

如果我需要根据表格 2(单元格 C4)的声明锁定表格 1(单元格 C1)上的单元格,
如果表 1 C4 上为“否”; 表 2 必须被锁定,并且它必须从表 1 C4 转移值,
到表 2 C4。

如果在表 1 上为“是”,我必须能够在表 2 上输入单元格

谢谢本特
该评论由网站上的主持人最小化
嗨,请任何人帮助我获取 VBA 代码。

如果我从单元格范围(A1:A1000)“abc”中的下拉列表中选择,则不将​​范围(D1:D1000)锁定到(F1:F1000)



如果我从单元格范围(A1:A1000)“abc”中的下拉列表中选择,则不将​​范围(D1:D1000)锁定到(F1:F1000)



如果我从单元格 Range(A1:A1000) "abc" 的下拉列表中选择,则将 Range(D1:D1000) 锁定为 (F1:F1000)



即 D1 到 F1 的相应单元格 A1



A2 用于 D2 到 F2
该评论由网站上的主持人最小化
我把上面的所有东西都复制到一张纸上。 它工作了一秒钟,现在我收到错误“无法设置 Range 类的 Locked 属性”。 我什至打开了一张全新的表格并逐字复制了您的示例。 知道发生了什么吗?
该评论由网站上的主持人最小化
你好,

我需要你的帮助。 当我从单元格中选择 No 选项时,我希望下面的列被锁定/变灰。

那可能吗? 我试过这个公式,但效果很好

私人子Worksheet_Change(按目标的ByVal目标)

如果范围(“D90”)=“是”那么

Range("C94:F104").Locked = False

ElseIf Range("D90") = "No" Then

Range("C94:F104").Locked = True

结束如果

END SUB
该评论由网站上的主持人最小化
嗨斯特菲,
代码运行良好。
如果要锁定单元格范围以防止编辑,则需要在 D90 中选择“否”选项后手动保护工作表。
由于 D90 在 C94:F104 范围内,保护工作表后,也无法编辑 D90。
该评论由网站上的主持人最小化
D90 不在范围内。 在 C4 上方 94 行
这里还没有评论
加载更多
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点

关注我们

版权所有 © 2009 - extendoffice.com。 | 版权所有。 供电 ExtendOffice。 | 网站地图
Microsoft和Office徽标是Microsoft Corporation在美国和/或其他国家的商标或注册商标。
受Sectigo SSL保护