ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] Excel如何用VBA实现单元格内遇到1、2、3、4、这样的就自动换行?

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-6 19:27 | 显示全部楼层
本帖最后由 vistababy 于 2024-2-6 19:29 编辑
panglong00 发表于 2024-2-6 16:46
做造价的人表示十分有用!感谢。

建议把相同的代码写成小的过程or函数,精简一下。提高可读性。

谢谢支持!我觉得这东西肯定有用的,对于我来说虽然用的时候不多。但有时候也会遇到,一直有做这个程序的想法,没想到发现了正则式这个好东西,再次感谢6楼@gwjkkkkk 的代码!正则式特别像通配符,我对vba不是很精通,正则式更是第一次用,幸好有点通配符的知识。
对于你的建议,我可能感觉有些困难,毕竟我vba技术很一般。我慢慢研究一段时间吧。可能一两个月以后也不一定

TA的精华主题

TA的得分主题

发表于 2024-2-6 20:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
vistababy 发表于 2024-2-5 18:57
32楼重传了附件。感谢建议。这个功能我平时其实用得少,只拿了那个上传测试文件不停地试验,这2天都在弄 ...

每个单元格进行了14次读取、判断、写回,可以只读写一次,14种判断模式不是都必须的,实际应用时有几种即可,可增加 判断模式选择 参数,指定判断模式减少判断次数。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-6 20:59 | 显示全部楼层
yjh_27 发表于 2024-2-6 20:55
每个单元格进行了14次读取、判断、写回,可以只读写一次,14种判断模式不是都必须的,实际应用时有几种即 ...

好复杂,不太会
我想要全能的,一键换行,不论任何情况都实现。

TA的精华主题

TA的得分主题

发表于 2024-2-6 21:03 | 显示全部楼层
vistababy 发表于 2024-2-6 20:59
好复杂,不太会
我想要全能的,一键换行,不论任何情况都实现。

只把每段代码之间的写、读语句注释即可提速
'Rng.Value = strTxt
            '原理同上
'           strTxt = Rng.Value
            

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-6 23:58 | 显示全部楼层
yjh_27 发表于 2024-2-6 21:03
只把每段代码之间的写、读语句注释即可提速
'Rng.Value = strTxt
            '原理同上

感谢建议。
我试了一下,确实如此,在for next循环中只保留第一个strTxt = rng.Value和最后一个rng.Value = strTxt即可,中间的所有这两行代码都可注释掉,因为全程都只是strTxt在参与。但为什么感觉速度提升不是特别的明显呢?我拿一个200行×10列的全部单元格都是数据进行试验,原来要25秒,修改后还是要差不多20秒,而我那个自动行高的2行也不知道是否需要,因为删除它们2行,速度提升竟然非常明显,降到10秒。

TA的精华主题

TA的得分主题

发表于 2024-2-7 09:14 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-7 11:27 | 显示全部楼层
又弄了一下,把原来的自动行高2行注释掉,下面改成这样的,自动行高速度飞快,相当于整行操作。
不要放原来的for。。next里面。。



    Selection.Rows.AutoFit
ActiveSheet.DisplayAutomaticPageBreaks = False
    ActiveWindow.View = xlNormalView '切换回普通视图,在页面布局下很慢
    For Each c In Selection.Rows
        Rows(c.Row).RowHeight = Rows(c.Row).RowHeight * 1.1

    Next


TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-7 11:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
回家过年了,没电脑,年后再聊了。没有手机APP?

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-8 10:13 来自手机 | 显示全部楼层
手机QQ浏览器登录竟然也行

TA的精华主题

TA的得分主题

发表于 2024-2-10 16:29 | 显示全部楼层
Sub 单元格数字换行()
    Dim originalText As String
    Dim modifiedText As String
    Dim i As Integer
   
    ' 获取选定单元格的文本
    originalText = Selection.Value
   
    ' 按照数字前后添加换行符
    modifiedText = originalText
    For i = 1 To 99
        modifiedText = Replace(modifiedText, i & "、", vbCrLf & i & "、", , 1) '双引号"."内符号要正确。
    Next i
   
    ' 替换完成后将结果赋值回选定单元格
    Selection.Value = modifiedText
End Sub

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

本版积分规则

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

GMT+8, 2024-11-5 14:45 , Processed in 0.034356 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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