ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何利用vba代码,让预设单元格中符合预设条件的数字变成预定颜色?

如何利用vba代码,让预设单元格中符合预设条件的数字变成预定颜色?

作者:绿色风 分类: 时间:2022-08-17 浏览:106
楼主
kevinchengcw
Q: 如何利用vba代码,让预设单元格中符合预设条件的数字变成预定颜色?
A: 代码如下:
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Dim Rng As Range, N&, mMatch, mColor
  3. For Each Rng In Target  '循环目标区域各个单元格(方便处理粘贴等多单元格情况)
  4.     If Not Intersect([b2:b3], Rng) Is Nothing Then  '如果当前循环到的单元格处在目标区域内,则
  5.         With CreateObject("vbscript.regexp")  '创建正则项目
  6.             .Global = True  '全局有效
  7.             .Pattern = "\d+"  '提取数字
  8.             If Rng <> "" Then  '如果单元格不为空,则
  9.                 For Each mMatch In .Execute(Rng.Value)  '循环匹配到的内容(如果未匹配到内容会自动跳过,不会报错)
  10.                     If InStr(",01,02,07,08,12,13,18,19,23,24,", "," & mMatch.Value & ",") > 0 Then  '判断取得的数字对应预设条件,从而取得预设颜色
  11.                         mColor = vbRed
  12.                     ElseIf InStr(",03,04,09,10,14,15,20,25,", "," & mMatch.Value & ",") > 0 Then
  13.                         mColor = vbBlue
  14.                     Else
  15.                         mColor = vbGreen
  16.                     End If
  17.                     N = InStr(Rng.Value, mMatch.Value)  '取得第一个符合的数字所处位置
  18.                     Do While InStr(N, Rng.Value, mMatch.Value) <> 0  '当可以继续找到时继续循环
  19.                         Rng.Characters(N, Len(mMatch.Value)).Font.Color = mColor  '将对应位置的字符串变成预设颜色
  20.                         N = N + Len(mMatch.Value)  '查找的初始位置后移
  21.                     Loop
  22.                 Next mMatch
  23.             End If
  24.         End With
  25.     End If
  26. Next Rng
  27. End Sub
详见素材源帖.
2楼
rongjun
学习了

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap