ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 270|回复: 6

[已解决] 关于按字符替换颜色后导致字符font信息错乱

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-5-20 14:34 | 显示全部楼层 |阅读模式
本帖最后由 客非 于 2024-5-21 15:47 编辑

因为工作需要,我做了一个宏,用于按字符把某些颜色的字符替换成另一个颜色。但是有一些单元格,在执行宏的时候,会导致整个单元格的font大变样

我摘了一个会大变样的单元格出来,B2的是原本的样子,B9是直接点击replace之后的样子,B8是双击单元格进入编辑模式之后,再退出选中单元格,点击replace的样子。执行顺序:B9>B8。可以看出,即便是大变样,他还会变得不一样。
我尝试了百度和问AI,都没给出解决办法。问Llama3,它认为是缓存问题,但是给出的解决办法解决不了问题。

请问各位大佬这个问题要怎么解决?

image.png
‘以下回答来自Llama3
A tricky Excel macro issue! 😅

The behavior you're describing is likely due to the way Excel handles character formatting in cells. When you iterate through each character in a cell using VBA, Excel may not always behave as expected, especially when it comes to formatting.

Here are a few possible reasons why your macro might not be working as intended:

  1.Character formatting is not explicitly set: When you iterate through each character, Excel may not retain the original formatting of the character. Instead, it may apply the default formatting of the cell or the formatting of the first character in the cell.
  2.Excel's internal formatting cache: Excel has an internal cache that stores formatting information for cells. When you make changes to character formatting using VBA, Excel may not always update this cache correctly, leading to unexpected behavior.
  3.VBA's character iteration is not always reliable: VBA's Characters object, which is used to iterate through each character in a cell, may not always return the correct character or formatting information.

image.png

AddIns.zip

47.23 KB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2024-5-21 04:35 | 显示全部楼层
楼主要实现什么效果?

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-21 09:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
taller 发表于 2024-5-21 04:35
楼主要实现什么效果?

在一个单元格中的文字会有多种颜色的情景下,我想把特定颜色的文字换成另一种颜色,不影响这个单元格中其他文字的颜色。用excel的替换功能没办法实现,所以写了个宏。这个功能是实现了,但是有bug,就是问题中的那种,有些单元格一替换就会font format 大变样。我想知道这个bug要怎么解决

下例中,我要把蓝色字改成绿色字,同时不影响其他font format
图一:使用excel的替换功能
image.png
图二:宏实现效果
image.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-21 10:09 | 显示全部楼层
taller 发表于 2024-5-21 04:35
楼主要实现什么效果?

debug的时候发现,刚遍历了第一个字符,后面的format就变了

TA的精华主题

TA的得分主题

发表于 2024-5-21 10:31 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-21 15:45 | 显示全部楼层

大佬太牛了!多谢版主!
虽然不知道究竟是为啥会崩样式但是有个恢复功能也能解决这个问题

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-12 18:52 | 显示全部楼层

版主请问这个有什么提升效率的解决方案么?我发现在替换前先备份的方案严重降低替换速度,如果单元格里的字符很多,速度会降慢的很严重。
原本想直接备份单元格对象,但是好像只能复制粘贴到另一个单元格上才行。然后想备份characters或者font,结果这俩好像不能复制备份
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 01:48 , Processed in 0.034720 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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