本文主要是介绍神奇的条件格式,也许是个BUG,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
工作中有如图所示数据,设置了简单的条件格式,如果单元格中包含Excel,那么该单元格字体为红色,如下图所示。
现在希望突出显示关键字Excel,将其字体颜色设置为绿色。手工操作并复杂,按F2键,单元格进入编辑状态,选中关键字,然后设置字体颜色,易如反掌,如下图所示。
如果有大量的数据需要进行这个操作,那么就太耗费时间了,为啥不用VBA来实现,这个代码想必也不会太复杂。
示例代码如下。
Sub Demo1()strKey = "Excel"For Each Rng In [a1].CurrentRegioniLoc = InStr(Rng.Value, strKey)If iLoc > 0 ThenRng.Characters(Start:=iLoc, Length:=Len(strKey)).Font.Color = vbGreenEnd IfNext
End Sub
【代码解析】
第3行代码循环遍历单元格。
第4行代码查找关键字位置。
第6行代码设置关键字字体颜色为绿色。
运行代码,A1单元格就像中了邪,没有任何反应,理想很丰满现实很骨干。
经过反复尝试,发现只要关键字在单元格的起始位置,那么这个代码就无法改变关键字的字体颜色,只能认为这是Excel的一个BUG。
既然找到了规律,那么可以用变通的方式来实现。
Sub Demo2()strKey = "Excel"For Each Rng In [a1].CurrentRegionRng.Value = Chr(32) & Rng.ValueiLoc = InStr(Rng.Value, strKey)If iLoc > 0 ThenRng.Characters(Start:=1, Length:=0).Font.ColorIndex = xlAutomaticRng.Characters(Start:=iLoc, Length:=Len(strKey)).Font.Color = vbGreenEnd IfNext
End Sub
【代码解析】
第4行代码在单元格中增加一个前导空格。
第7行代码看似无用,但是没有此行代码,A1单元格仍然无法实现关键字变色的效果。
运行代码,如下图所示,虽然不完美,但是基本上实现要求。
在试图恢复单元格内容时,发现了一个有趣的现象。
Sub RemoveSpace()For Each Rng In [a1].CurrentRegionRng.Value = Trim(Rng)Next
End Sub
代码非常简单,就是移除单元格中的前导空格,但是关键字高亮的效果也就跟随消失。
如果大家也遇到类似的问题,那么拿去用吧,不要问为什么,我也不知道 😛
如果某位高手知道其中的原因,烦请在评论区留言赐教,拜谢!
这篇关于神奇的条件格式,也许是个BUG的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!