ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4810|回复: 5

[求助] 关于指定单元格数据输入后自动保护,更改数据需要密码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-7-22 16:38 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
如图片所示,表格从I33和J33往下都是带有下拉选项的单元格,现在想要把I33到J50区域内的单元格在下拉选择数据后单元格自动保护,如果需要修改则需要密码,没有输入数据的则可以继续输入数据,自己编了一段码,发现是针对整个表格的,现在想要修改成指定区域单元格,不知道怎么修改,拜托。。。
现有的码:Private SubWorksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
With Target
If .Value <> "" Then
PW = InputBox("
修改内容请输入密码:")
If PW <> "123456" Then
Cells(1, 1).Select
Else
Exit Sub
End If
End If
End With
End Sub
[975I6`SMEGR`1Z~~E}G}PA.png

新建 Microsoft Office Excel 工作表.zip

22 Bytes, 下载次数: 69

TA的精华主题

TA的得分主题

发表于 2018-7-22 17:22 | 显示全部楼层
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column <> 9 or target.column <> 10 Then Exit Sub
    Dim rng As Range
    activesheet.Unprotect 12346
    For Each rng In Intersect([i:j], ActiveSheet.UsedRange)
        If Len(rng.Value) > 0 Then
            rng.Locked = True
        End If
    Next rng
    activesheet.Protect 12346
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column <> 9 or target.column <> 10 Then Exit Sub
    Dim str As String
    If Len(Target.Value) > 0 And Target.Locked = True Then
        str = Application.InputBox("請輸入密碼", , , , , , , 1)
        If str = "123456" Then
            Sheet1.Unprotect 123456
            Target.Locked = False
            Sheet1.Protect 123456
        End If
    End If
End Sub

TA的精华主题

TA的得分主题

发表于 2018-7-22 17:58 | 显示全部楼层
這個才對
先運行test
Sub test()
    [i:j].Locked = False
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column < 9 Or Target.Column > 10 Then Exit Sub
    Dim rng As Range
    ActiveSheet.Unprotect 123456
    For Each rng In Intersect(Range("i:j"), ActiveSheet.UsedRange)
        If Len(rng.Value) > 0 Then
            rng.Locked = True
        End If
    Next rng
    ActiveSheet.Protect 123456
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column < 9 Or Target.Column > 10 Then Exit Sub
    Dim str As String
    If Len(Target.Value) > 0 And Target.Locked = True Then
        str = Application.InputBox("請輸入密碼", , , , , , , 1)
        If str = "123456" Then
            ActiveSheet.Unprotect 123456
            Target.Locked = False
            ActiveSheet.Protect 123456
        End If
    End If
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-23 08:14 | 显示全部楼层
你好!不好意思,可能是我没有表达清楚,我希望在附件表格的I33到J50区域内的单元格,在空格时可以输入数据,当数据输入后自动保护,如需修改则需要密码。上面的码我没有看到区域在哪?还有运行了一下,发现I列和J列的数据即使是空格也是被保护的,这样我就无法编辑新的数据进去,所以这个还是有问题,拜托   

TA的精华主题

TA的得分主题

发表于 2018-7-23 08:31 | 显示全部楼层
jianxinshi 发表于 2018-7-23 08:14
你好!不好意思,可能是我没有表达清楚,我希望在附件表格的I33到J50区域内的单元格,在空格时可以输入数据 ...

區域就是 i 和 j
另外需要首先設置i 和 j的 locked = false

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-23 15:14 | 显示全部楼层
这个还是有问题,我把区域改了i33,j34,发现还是所有区域都被保护,而且空白单元格都不能输入新的数据,我的代码上是对所有单元格都有保护的,但是我不能查找,也不能粘贴复制。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-10 17:01 , Processed in 0.022306 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表