ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 《求助》输入数据异常时变颜色并且有告警声音

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-11-13 09:39 | 显示全部楼层 |阅读模式
本帖最后由 juleos 于 2016-11-13 16:52 编辑

我的问题,输入数据异常时变颜色并且有告警声音。

具体如下:
1.需要有一列数据为输入的数据列,如A列“扫描序列号”
2.需要一列仅仅显示本次扫描的批次,如B列“扫描批次”
3.需要一个标准值,可以放在C2。
4.需要计数,记下所有与标准批次相同的数量。

5.如果扫描批次与标准批次一致,则显示绿色。

接下来是问题的重点,如果不一致,显示红色、最好像“数据有效性”里出个提示框,不能输入、同时播放一个警告的提示声音(最好不是主板的蜂鸣声)

VB没基础,希望能回答的时候各位尽量说详细一点,以便我理解,十分感谢,谢谢!
扫描序列号
扫描批次
标准
A1234560001
A123456
A123456
A1234560002
A123456
数量
A1234560003
A123456
11
A1234560004
A123456
A1234560005
A123456
A1234560006
A123456
A1234560007
A123456
A1234560008
A123456
A1234560009
A123456
A1234560010
A123456
A6543210011
A654321
 



测试3.zip

7.37 KB, 下载次数: 6

TA的精华主题

TA的得分主题

发表于 2016-11-13 11:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
欢迎新会员!
建议上传表格附件来说明问题。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-11-13 16:53 | 显示全部楼层
蓝桥玄霜 发表于 2016-11-13 11:40
欢迎新会员!
建议上传表格附件来说明问题。

谢谢提醒,已经修改并上传附件了,请查阅。

TA的精华主题

TA的得分主题

发表于 2016-11-14 09:15 | 显示全部楼层
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Count > 1 Then Exit Sub
  3. If Target.Column <> 1 Or Target.Row < 2 Then Exit Sub
  4. Dim bz$
  5. bz = [c2].Value
  6. Target.Offset(0, 1) = Left(Target.Value, 7)
  7. If Left(Target.Value, 7) <> bz Then
  8.     Target.Offset(0, 1).Font.ColorIndex = 3
  9.     Call PlayWAV
  10. End If
  11. End Sub
复制代码

请见附件。

201611.rar

304.53 KB, 下载次数: 64

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-11-14 11:02 来自手机 | 显示全部楼层
蓝桥玄霜 发表于 2016-11-14 09:15
请见附件。

晚些时候上电脑才能看,先谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-11-14 18:45 | 显示全部楼层
本帖最后由 juleos 于 2016-11-14 22:51 编辑

版主老师,我是初接触VB,

我试了,觉得很神奇,竟然真的出报警声音了。
下面有几个问题,希望您能回复下:
1.能否麻烦您把语句逐条简单解释一下。-楼下我试着注释了一下,不知可否
2.Excel的文件名和sheet名能改么?       -确认过了,没啥事
3.表格另存为的话里面的内容不会受影响吧?   ---试过了,没影响
4.报警声音必须和Excel放在一个表格里么,如果改报警音可以么,需要有什么注意的么?   -试过了,需要放在同一个文件夹里,且告警文件名字不能改。
5.稍后我想给表格价格数据有效性和条件格式,禁止重复数据的再次输入,会对您的VB有影响吗?

问题比较多,还希望您有时间尽量回复下。

谢谢啦

TA的精华主题

TA的得分主题

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

我试着注释了一下,有点感觉懂了
Private Sub Worksheet_Change(ByVal Target As Range)   //sub|function说明一段代码是个过程(无返回值)还是个函数(有返回值),private|public来说明这个过程或者函数的可访问级别:private:私有的,仅自己或当前窗体可用,public:公共的,可供任何窗体和过程调用;Worksheet_Change是要等到你点选的单元格,数据有了改变才会触发事件的执行;ByVal Target As Range的用法是将单元格范围作为目标来处理

If Target.Count > 1 Then Exit Sub    //如果选择的单元格列值大于1就退出程序。

If Target.Column <> 1 Or Target.Row < 2 Then Exit Sub    //通过target.row属性获取光标所在的行

Dim bz$                 //定义长整型变量 bz  
   

bz = [c2].Value
          //bz=单元格C2的值

Target.Offset(0, 1) = Left(Target.Value, 7)  //表示以目标单元格为基准向列数增加一列的新单元格.,该单元格取目标单元格的前七位值

If Left(Target.Value, 7) <> bz Then   //如果目标单元格的前七位值不等于变量值bz
  

    Target.Offset(0, 1).Font.ColorIndex =
// 表示以目标单元格为基准向列数增加一列的新单元格,该单元颜色为3(红色)
    Call PlayWAV

//调用WAV文件
End If

End Sub
  //end

TA的精华主题

TA的得分主题

发表于 2016-11-15 09:12 | 显示全部楼层
juleos 发表于 2016-11-14 18:45
版主老师,我是初接触VB,

我试了,觉得很神奇,竟然真的出报警声音了。

你的做法很正确:就是要多试试,试错了也不要紧,改回来即可。
报警音可以改,代码在模块里面,文件名修改即可。同名的音频文件放在同一个文件夹里即可。

TA的精华主题

TA的得分主题

发表于 2018-6-25 16:04 | 显示全部楼层
正好工作中遇到类似的问题,在此学习大神的高招!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-27 04:56 , Processed in 0.034936 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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