ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 想实现某条件下自动清空内容,禁止输入并在输入时给出警告的功能

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-10-15 17:46 | 显示全部楼层 |阅读模式

各位大神,想实现单元格在某条件下自动清空、禁止输入并且再输入时给出警告的功能。比如:F6单元格内容为“广播”时,后面的H6:M6单元格自动清空,如果有内容输入,再次清空并且给出警告“选择广播时禁止输入此单元格”,需要在第6行到第500行的每一行在选择“广播”时都要实现上面说的功能。谢谢!

image.png

自动清空内容,禁止输入并在输入时给出警告1.0.zip

10.88 KB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2022-10-15 18:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请参考附件。

自动清空内容,禁止输入并在输入时给出警告1.0.zip

19.29 KB, 下载次数: 32

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-10-15 18:41 | 显示全部楼层

可以实现功能,谢谢,另外能否帮我在代码上做个注释,我是初学者,一方面是想学一学,另一方面,如果有别的微调,我也可以自己修改代码,大概看懂了第一段和第二段的代码,第三段的没看懂。麻烦了

TA的精华主题

TA的得分主题

发表于 2022-10-15 20:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Private Sub Worksheet_Change(ByVal Target As Range) '单元格改变触发的change事件
  2. Application.EnableEvents = False '关闭事件,以避免重复触发事件
  3. '实现不能输入的功能
  4. If Target.Row >= 6 And Target.Row <= 500 Then '行大于等于6 小于等于500才触发事件
  5.       If Target.Column >= 8 And Target.Column <= Range("m1").Column Then '列大于等于8 小于等于m列才触发事件
  6.             If Cells(Target.Row, 6) = "广播" Then '如果单元格输入值所在行的第6列=广播 那么
  7.                   MsgBox "选择广播时禁止输入此单元格", vbExclamation '弹窗提示
  8.                   Target.Value = "" '输入值清空
  9.             End If
  10.       End If
  11. End If
  12. '实现清空的功能
  13. If Target.Row >= 6 And Target.Row <= 500 Then '限定事件触发的行列范围
  14.       If Target.Column = 6 Then
  15.             If Target.Value = "广播" Then '如果输入值=广播 那么
  16.                   Target.Offset(0, 2).Resize(1, 6).ClearContents '输入值向右偏移2列为顶点扩展1行号6列的区域清空
  17.             End If
  18.       End If
  19. End If
  20. Application.EnableEvents = True '事件开启
  21. End Sub


  22. Sub 清空()
  23. arr1 = Sheet3.Range("b6:n" & Sheet3.Range("b" & Rows.Count).End(xlUp).Row)
  24. '单元格B6:n最大行的区域装入数组
  25. For i = 1 To UBound(arr1, 1) '从第1行循环到最大行
  26.       If arr1(i, 5) = "广播" Then '如果第i行第5列=广播 那么
  27.             For j = 7 To UBound(arr1, 2) - 1 '从第7列到最大列-1列的区域清空
  28.                   arr1(i, j) = ""
  29.             Next j
  30.       End If
  31. Next i
  32. With Sheet3.Range("b6") 'with省略语句
  33. .Resize(UBound(arr1, 1), UBound(arr1, 2)) = arr1
  34. '数组重新写入到以单元格b6为顶点扩展数组的行数,列数的单元格区域
  35. End With
  36. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-10-17 10:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-10-17 11:03 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-10-17 11:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-10-18 14:57 | 显示全部楼层

您好,昨天试了几次您帮我写的功能后发现,在复制或删除两行以上的信息时,写的代码就失灵了,因为在填表过程种避免不了大量的数据删除或复制粘贴,所以能否帮我改一下代码,改成在删除或复制粘贴后功能依然能实现。多谢

自动清空内容,禁止输入并在输入时给出警告2.0(复制或删除两行以上代码失灵).zip

19.54 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2022-10-18 15:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
小白01 发表于 2022-10-18 14:57
您好,昨天试了几次您帮我写的功能后发现,在复制或删除两行以上的信息时,写的代码就失灵了,因为在填表 ...

不了解操作情况,疏忽了,可以这样处理

image.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-10-18 15:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
小白01 发表于 2022-10-18 14:57
您好,昨天试了几次您帮我写的功能后发现,在复制或删除两行以上的信息时,写的代码就失灵了,因为在填表 ...

两个红框的内容任意用一个都能解决你的问题

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-20 04:34 , Processed in 0.049628 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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