Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5265|回复: 5

[已解决]修改工作表非空白数据时,如何修改VBA代码,自动弹出系统自带的【撤销工作表保护】...

[复制链接]
发表于 2014-8-13 09:02 | 显示全部楼层 |阅读模式
5学分
本帖最后由 feiaoli 于 2014-8-13 09:03 编辑

请教老师:
修改工作表非空白数据时,如何修改VBA代码,自动弹出
系统自带的【撤销工作表保护】窗口,而不是【提示框】



最佳答案
2014-8-13 11:24
只有双击区域内的单元格才表示为要修改单元格,在你页代码区增加两段代码:
  1. Private Sub Worksheet_BeforeDoubleClick(ByVal T As Range, Cancel As Boolean)
  2. If T.Row > 4 And T.Row < 22 And T.Column > 1 And T.Column < 10 Then
  3.     Sheet1.Unprotect ' Password:="12345"
  4. End If
  5. End Sub
  6. Private Sub Worksheet_Change(ByVal T As Range)
  7. If T.Row > 4 And T.Row < 22 And T.Column > 1 And T.Column < 10 Then
  8.     Sheet1.Protect Password:="12345", AllowFiltering:=True
  9. End If
  10. End Sub
复制代码
前段代码是双击就出现撤销保护框,后段代码是修改单元格后就保护起来

输入密码框

输入密码框

提示框

提示框

当修改指定区域的非空白单元格时自动调用系统自带的【撤销工作表保护】窗口,修改完后.rar

12.77 KB, 下载次数: 17

修改代码

最佳答案

查看完整内容

双击的作用就是告诉电脑,我要修改数据了,你还有什么办法告诉电脑你要修改数据?
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-8-13 09:02 | 显示全部楼层
双击的作用就是告诉电脑,我要修改数据了,你还有什么办法告诉电脑你要修改数据?
回复

使用道具 举报

发表于 2014-8-13 11:24 | 显示全部楼层    本楼为最佳答案   
只有双击区域内的单元格才表示为要修改单元格,在你页代码区增加两段代码:
  1. Private Sub Worksheet_BeforeDoubleClick(ByVal T As Range, Cancel As Boolean)
  2. If T.Row > 4 And T.Row < 22 And T.Column > 1 And T.Column < 10 Then
  3.     Sheet1.Unprotect ' Password:="12345"
  4. End If
  5. End Sub
  6. Private Sub Worksheet_Change(ByVal T As Range)
  7. If T.Row > 4 And T.Row < 22 And T.Column > 1 And T.Column < 10 Then
  8.     Sheet1.Protect Password:="12345", AllowFiltering:=True
  9. End If
  10. End Sub
复制代码
前段代码是双击就出现撤销保护框,后段代码是修改单元格后就保护起来
回复

使用道具 举报

 楼主| 发表于 2014-8-13 11:54 | 显示全部楼层
本帖最后由 feiaoli 于 2014-8-13 11:58 编辑
su45 发表于 2014-8-13 11:24
只有双击区域内的单元格才表示为要修改单元格,在你页代码区增加两段代码:前段代码是双击就出现撤销保护框 ...

非常感谢!!,已经满足了我的要求。但是可不可以把您的第一段代码改写成重新写入数据弹出 密码保护的对话框呢?再次感谢老师!!
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2. Dim irow As Long, icol As Long
  3. irow = Target.Row
  4. icol = Target.Column
  5. If irow > 4 And irow < 28 Then '限定表格行
  6.     If icol > 1 And icol < 13 Then '限定表格列
  7.         Sheet1.Unprotect Password:="12345"
  8.         If ActiveCell.Value <> "" Then
  9.             Target.Locked = True
  10.             Sheet1.Protect Password:="12345", AllowFiltering:=True
  11.         End If
  12.     End If
  13. End If

  14. End Sub



  15. Private Sub Worksheet_BeforeDoubleClick(ByVal T As Range, Cancel As Boolean) '双击就出现撤销保护框
  16. If T.Row > 4 And T.Row < 22 And T.Column > 1 And T.Column < 10 Then
  17.     Sheet1.Unprotect ' Password:="12345"
  18. End If
  19. End Sub
  20. Private Sub Worksheet_Change(ByVal T As Range) '修改单元格后就保护起来
  21. If T.Row > 4 And T.Row < 22 And T.Column > 1 And T.Column < 10 Then
  22.     Sheet1.Protect Password:="12345", AllowFiltering:=True
  23. End If
  24. End Sub
复制代码
回复

使用道具 举报

发表于 2014-8-13 13:12 | 显示全部楼层
什么是“重新写入数据”?
回复

使用道具 举报

 楼主| 发表于 2014-8-13 14:26 | 显示全部楼层
su45 发表于 2014-8-13 13:14
双击的作用就是告诉电脑,我要修改数据了,你还有什么办法告诉电脑你要修改数据?

谢谢老师的教诲!!尽管我不懂VBA,但是\(^o^)/~我比较骄傲的是和我想的一样,必须给EXCEL命令他才识别。再次感谢您!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-3 10:36 , Processed in 0.366983 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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