神奇的条件格式,也许是个BUG

2024-03-12 08:18
文章标签 条件 格式 bug 神奇 也许

本文主要是介绍神奇的条件格式,也许是个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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/800651

相关文章

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

Python按条件批量删除TXT文件行工具

《Python按条件批量删除TXT文件行工具》这篇文章主要为大家详细介绍了Python如何实现按条件批量删除TXT文件中行的工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.简介2.运行效果3.相关源码1.简介一个由python编写android的可根据TXT文件按条件批

easyui同时验证账户格式和ajax是否存在

accountName: {validator: function (value, param) {if (!/^[a-zA-Z][a-zA-Z0-9_]{3,15}$/i.test(value)) {$.fn.validatebox.defaults.rules.accountName.message = '账户名称不合法(字母开头,允许4-16字节,允许字母数字下划线)';return fal

[数据集][目标检测]血细胞检测数据集VOC+YOLO格式2757张4类别

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2757 标注数量(xml文件个数):2757 标注数量(txt文件个数):2757 标注类别数:4 标注类别名称:["Platelets","RBC","WBC","sickle cell"] 每个类别标注的框数:

封装MySQL操作时Where条件语句的组织

在对数据库进行封装的过程中,条件语句应该是相对难以处理的,毕竟条件语句太过于多样性。 条件语句大致分为以下几种: 1、单一条件,比如:where id = 1; 2、多个条件,相互间关系统一。比如:where id > 10 and age > 20 and score < 60; 3、多个条件,相互间关系不统一。比如:where (id > 10 OR age > 20) AND sco

一步一步将PlantUML类图导出为自定义格式的XMI文件

一步一步将PlantUML类图导出为自定义格式的XMI文件 说明: 首次发表日期:2024-09-08PlantUML官网: https://plantuml.com/zh/PlantUML命令行文档: https://plantuml.com/zh/command-line#6a26f548831e6a8cPlantUML XMI文档: https://plantuml.com/zh/xmi

使用条件变量实现线程同步:C++实战指南

使用条件变量实现线程同步:C++实战指南 在多线程编程中,线程同步是确保程序正确性和稳定性的关键。条件变量(condition variable)是一种强大的同步原语,用于在线程之间进行协调,避免数据竞争和死锁。本文将详细介绍如何在C++中使用条件变量实现线程同步,并提供完整的代码示例和详细的解释。 什么是条件变量? 条件变量是一种同步机制,允许线程在某个条件满足之前进入等待状态,并在条件满

一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模)

1.没有分段的情况 原函数为一元二次凹函数(开口向下),如下: 因为要使得其存在正解,必须满足,那么。 上述函数的最优结果为:,。 对应的mathematica代码如下: Clear["Global`*"]f0[x_, a_, b_, c_, d_] := (a*x - b)*(d - c*x);(*(b c+a d)/(2 a c)*)Maximize[{f0[x, a, b,

单精度浮点数按存储格式转为整数的程序

///#include<cstdio>//-----------------union int_char{unsigned char ch[4];float i;};void out_put(union int_char x)//x86是小端对其模式,即最数据的最低位存储在地址的最低位上。{printf("单精度浮点数值为:%f\n",x.i,x.i);printf("存储位置从左到右

[数据集][目标检测]智慧农业草莓叶子病虫害检测数据集VOC+YOLO格式4040张9类别

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4040 标注数量(xml文件个数):4040 标注数量(txt文件个数):4040 标注类别数:9 标注类别名称:["acalcerosis","fertilizer","flower","fruit","grey