Excel精英培训网

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

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

[复制链接]
发表于 2016-6-14 20:00 | 显示全部楼层 |阅读模式
本帖最后由 song_syl灰太狼 于 2016-6-14 20:31 编辑

                           怎样用VBA改变单元格内指定字符的颜色而不是改变整个单元格内所有字符的颜色?
           这个问题困扰我很久了,我看了一些帖子,都不是我想要的结果,希望大家能帮帮我,在这里我先谢谢大家了!!!
    举个例子:
          如果,在A1:A10任意一个单元格中,该单元格里的字符包含了  “指定的特定字符”  (如下图所示中的 "卖品")
          那么,在这个单元中,只有 “卖品” 这2个字会变成 “蓝色” 该单元格中的其他字符不改变颜色;

例如
             A                     B                C
1   电子鸽钟 卖品   →  注释: A1单元格中 包含了 "卖品“  此时,“卖品” 这个2个字则会自动变成 “蓝色” ,而 “电子鸽钟” 不会变色
2   电子踏板 卖品
3
4
5
6
7
8
9
     谢谢各位大咖了,帮我解决一下这个问题吧!我先谢谢大家了!!!拜托!拜托!拜托!
最佳答案
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
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2016-6-14 20:37 | 显示全部楼层
为什么没有人给我回贴呢?是我的问题大家看不懂还是其他的原因,我是新手,如果有什么不对的地方,希望大家告诉我,希望大家能帮帮我!
回复

使用道具 举报

发表于 2016-6-14 20:44 | 显示全部楼层
  1. Sub xx()
  2.     Dim rng As Range, str$
  3.     str = "卖品"    '要上色的字符串
  4.     For Each rng In Sheet1.Range("A1:A10")  '自己设置区间
  5.         rng.Characters(Start:=InStr(rng.Value, str), Length:=Len(str)).Font.ColorIndex = 3
  6.     Next
  7. End Sub
复制代码

新建 Microsoft Excel 工作表.rar

11.56 KB, 下载次数: 46

回复

使用道具 举报

发表于 2016-6-14 20:47 | 显示全部楼层
song_syl灰太狼 发表于 2016-6-14 20:37
为什么没有人给我回贴呢?是我的问题大家看不懂还是其他的原因,我是新手,如果有什么不对的地方,希望大家 ...

把你的文件直接上传上来,别人才好帮你呀,要不然,别人不知道你的表或者还得做一个表来猜测你的需求
把你的原文件压缩后,在发贴时,点附件,选择你的压缩文件,确定,发表,这样就有你的附件了
回复

使用道具 举报

 楼主| 发表于 2016-6-14 20:47 | 显示全部楼层
谢谢“老司机带带我”!谢谢!我第一时间看到你的回复 我先试试哈!
回复

使用道具 举报

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

我想问下 颜色参数在哪里设置?还有就是我刚才试了试,我输入”卖品“2个字后,不是立即”卖品“就变成红色了,还要点击运行代码才可以,怎样输入"卖品“后,把鼠标点击其他单元格上,就能使”卖品“变色呢?
回复

使用道具 举报

 楼主| 发表于 2016-6-14 20:58 | 显示全部楼层
fjmxwrs 发表于 2016-6-14 20:47
把你的文件直接上传上来,别人才好帮你呀,要不然,别人不知道你的表或者还得做一个表来猜测你的需求
把 ...

谢谢您的提醒,谢谢!我以后知道了会注意的!你这样一说,我就找到问题所在了,谢谢!
回复

使用道具 举报

发表于 2016-6-14 21:03 | 显示全部楼层
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim rng As Range, str$
  3.     str = "卖品"    '要上色的字符串
  4.     If InStr(Target.Value, str) = 0 Then Exit Sub
  5.     Target.Characters(Start:=InStr(Target.Value, str), Length:=Len(Target)).Font.ColorIndex = 3  '这个3是设置颜色的
  6. End Sub
复制代码

新建 Microsoft Excel 工作表.rar

13.35 KB, 下载次数: 63

评分

参与人数 1 +30 收起 理由
fjmxwrs + 30 赞一个

查看全部评分

回复

使用道具 举报

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

谢谢您不厌其烦的帮我解答问题,还有个问题,我想指定多个”特定字符“ 如 ”卖品“、”赠品“、”退货“、“其他原因退回”,然后再分别设置不同的颜色,该怎样添加呢?能再帮我添加上去吗?因为我是刚开始学VBA,所以现在还没有到达别人给我一个代码,我就能改的地步,谢谢您!再帮我改改把!
回复

使用道具 举报

发表于 2016-6-14 21:25 | 显示全部楼层
代码替换成下面这个,可以设置N个
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim str$
  3.     str = "卖品"    '要上色的字符串
  4.     If InStr(Target.Value, str) Then Target.Characters(Start:=InStr(Target.Value, str), Length:=Len(str)).Font.ColorIndex = 3  '这个3是设置颜色的
  5.     str = "赠品"    '要上色的字符串
  6.     If InStr(Target.Value, str) Then Target.Characters(Start:=InStr(Target.Value, str), Length:=Len(str)).Font.ColorIndex = 5  '这个5是设置颜色的
  7.     str = "退货"    '要上色的字符串
  8.     If InStr(Target.Value, str) Then Target.Characters(Start:=InStr(Target.Value, str), Length:=Len(str)).Font.ColorIndex = 8  '这个8是设置颜色的
  9.     str = "其他原因退回"    '要上色的字符串
  10.     If InStr(Target.Value, str) Then Target.Characters(Start:=InStr(Target.Value, str), Length:=Len(str)).Font.ColorIndex = 13  '这个13是设置颜色的
  11. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 21:35 , Processed in 0.713322 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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