Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖

[已解决]求助:怎样 编写VBA代码 改变 “指定” 字符的颜色?

[复制链接]
 楼主| 发表于 2016-6-14 21:37 | 显示全部楼层
老司机带带我 发表于 2016-6-14 21:25
代码替换成下面这个,可以设置N个

这个代码有个小问题:
       就是 当你在 “不同” 的单元格 中 输入 “卖品”、“赠品” 或者 输入 ”卖品“、”退货“、”其他原因退回“ (如 A1 单元格中的内容是 “卖品”,A2单元格中的内容是 “赠品”,A3单元格中的内容是 “退货”)
然后,再同时选中A1、A2、A3单元格,鼠标右键清空时,会提示 “运行错误” 您能帮我再调试完善一下吗?谢谢您了!
回复

使用道具 举报

发表于 2016-6-14 21:40 | 显示全部楼层
song_syl灰太狼 发表于 2016-6-14 21:37
这个代码有个小问题:
       就是 当你在 “不同” 的单元格 中 输入 “卖品”、“赠品” 或者 输入 ” ...
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim str$
  3.     If Target.Count > 1 Then Exit Sub
  4.     str = "卖品"    '要上色的字符串
  5.     If InStr(Target.Value, str) Then Target.Characters(Start:=InStr(Target.Value, str), Length:=Len(str)).Font.ColorIndex = 3  '这个3是设置颜色的
  6.     str = "赠品"    '要上色的字符串
  7.     If InStr(Target.Value, str) Then Target.Characters(Start:=InStr(Target.Value, str), Length:=Len(str)).Font.ColorIndex = 5  '这个5是设置颜色的
  8.     str = "退货"    '要上色的字符串
  9.     If InStr(Target.Value, str) Then Target.Characters(Start:=InStr(Target.Value, str), Length:=Len(str)).Font.ColorIndex = 8  '这个8是设置颜色的
  10.     str = "其他原因退回"    '要上色的字符串
  11.     If InStr(Target.Value, str) Then Target.Characters(Start:=InStr(Target.Value, str), Length:=Len(str)).Font.ColorIndex = 13  '这个13是设置颜色的
  12. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2016-6-14 21:55 | 显示全部楼层
老司机带带我 发表于 2016-6-14 21:40

      在这里再次感谢您,不厌其烦的帮我不断的改进这个代码!谢谢!谢谢了!
      还有2个问题,我也是刚刚发现的:
      ① 比如 在A1 单元格中输入 “卖品”  卖品变成 红色 没有错 如果把A1清空 再在A1中输入其他的字符 比如 ”清仓” 这2个字就变成红色的了 应该是黑色
      ② 比如 在A2 单元格中输入 “赠品” 赠品变成 蓝色 没有错 如果继续在A2 单元格中的“赠品”后面输入 “123”  则“123”也变成了蓝色的了 应该是黑色 只有关键字变色,其他字符应该不变色才对。

      谢谢您了!再帮我调试一下吧!谢谢!谢谢!
回复

使用道具 举报

发表于 2016-6-14 21:59 | 显示全部楼层    本楼为最佳答案   
song_syl灰太狼 发表于 2016-6-14 21:55
在这里再次感谢您,不厌其烦的帮我不断的改进这个代码!谢谢!谢谢了!
      还有2个问题,我也是 ...

疏忽了,没想周全!
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim str$
  3.     If Target.Count > 1 Then Exit Sub
  4.     Target.Font.ColorIndex = 1  '先还原成黑色
  5.     str = "卖品"    '要上色的字符串
  6.     If InStr(Target.Value, str) Then Target.Characters(Start:=InStr(Target.Value, str), Length:=Len(str)).Font.ColorIndex = 3  '这个3是设置颜色的
  7.     str = "赠品"    '要上色的字符串
  8.     If InStr(Target.Value, str) Then Target.Characters(Start:=InStr(Target.Value, str), Length:=Len(str)).Font.ColorIndex = 5  '这个5是设置颜色的
  9.     str = "退货"    '要上色的字符串
  10.     If InStr(Target.Value, str) Then Target.Characters(Start:=InStr(Target.Value, str), Length:=Len(str)).Font.ColorIndex = 8  '这个8是设置颜色的
  11.     str = "其他原因退回"    '要上色的字符串
  12.     If InStr(Target.Value, str) Then Target.Characters(Start:=InStr(Target.Value, str), Length:=Len(str)).Font.ColorIndex = 13  '这个13是设置颜色的
  13. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2016-6-14 22:07 | 显示全部楼层
老司机带带我 发表于 2016-6-14 21:59
疏忽了,没想周全!

问题都解决了!太谢谢您!很高兴您能帮我把这个梦寐以求的想法给实现了!我现在也在学习VBA,我是从事库房管理工作的,自己做的EXCEL表格,里面用了包含公式和VBA,717055956 这是我的QQ 能加下您的QQ吗?以后我如果有什么不懂的地方可以问问您吗?
回复

使用道具 举报

 楼主| 发表于 2016-6-14 22:30 | 显示全部楼层
song_syl灰太狼 发表于 2016-6-14 22:07
问题都解决了!太谢谢您!很高兴您能帮我把这个梦寐以求的想法给实现了!我现在也在学习VBA,我是从事库房 ...

您好!您还在吗?刚才在使用的过程中又发现了一个问题:
      例如  在 A1 单元格中,输入2个”赠品“时,发现 第一个 “赠品” 变成蓝色了 而 第二个 “赠品” 并没有变色 应该也是 蓝色的才对
希望您看到我给您的这个回帖的时候,您能再帮我完善一下这个问题 谢谢您!麻烦了!
回复

使用道具 举报

发表于 2020-3-28 19:49 | 显示全部楼层
受教了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 13:49 , Processed in 0.182687 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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