求大佬指点!!!如何改善word中这段VBA代码

谬35 谬35 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

想实现的功能是:在文档中查找到类似“同比增加XXX万/亿”的表述都自动标红,目前这段代码只能实现“同比增加XXX”标红,无法将单位“万/亿”一起标红,问了ai一直解决不了,求大佬指教!

示例文本:

同比增加2222万,同比增加11万,同比增加111万,同比减少234万,同比增加1亿,同比增加0.16亿

同比增加2亿,同比增加1.23亿,同比增加1500万,同比减少23万 ,同比增加235亿

同比增加500万,显示出良好的增长趋势。

同比增加1.5亿,这对公司来说是一个重大里程碑

使用的版本是:WPS 12.1.0.18912

代码如下:

Sub Highlight同比增加()
    Dim oRange As Range
    Dim found As Boolean
    Dim startPos As Long
    Dim endPos As Long
    Dim searchText As String
    Dim char As String
    
    ' 设置查找文本
    searchText = "同比增加"
    
    ' 获取文档内容范围
    Set oRange = ActiveDocument.Content
    
    ' 查找“同比增加”
    With oRange.Find
        .Text = searchText & "*"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = False
        .MatchWildcards = True
    End With
    
    ' 开始查找
    found = oRange.Find.Execute
    
    ' 循环查找并标红
    Do While found
        ' 获取当前找到的位置
        startPos = oRange.Start
        endPos = oRange.End
        
        ' 扩展范围到包含数字和单位
        Do
            char = Mid(ActiveDocument.Content.Text, endPos + 1, 1)
            If char Like "[0-9.]" Or char = "万" Or char = "亿" Then
               endPos = endPos + 1
           Else
               Exit Do
           End If
        Loop
        
        ' 标红完整范围
        oRange.SetRange Start:=startPos, End:=endPos - 1
        oRange.Font.Color = RGB(255, 0, 0)
        
        ' 移动到下一个搜索位置
        oRange.Start = endPos + 1
        found = oRange.Find.Execute
    Loop
End
    
    ' 提示完成
    MsgBox "已成功标红所有相关内容!", vbInformation
End Sub
 

...全文

相关推荐

VBA代码大全大量的应用实例,WORD形式

vba代码大全,大量的应用实例,WORD形式,粘贴在VBA上就可以测试了。vba代码大全,大量的应用实例,WORD形式,粘贴在VBA上就可以测试了。vba代码大全,,粘贴在VBA上就可以测试了。

webljy

A4田字格硬笔书法比赛用纸:Word表格与Python批量生成

在文档自动化中,参数化排版把纸张、边距、行列数等视为可计算变量,而非手工拖拽的静态格式。其原理是先由版心反推格子尺寸和行列数,再锁定行高、列宽与边框样式,从而保证打印比例稳定。技术价值在于可将 Word/PDF 模板复用与批量套打,降低重复设置和误差。典型场景包括比赛用纸、稿纸、练字帖与证书等可打印文档。围绕 A4 田字格硬笔书法比赛用纸,Word 表格母格复刻、python-docx 与 reportlab 直出 PDF、邮件合并套打姓名座号,都是同一套参数化思路的落地。

咪爷

word VBA邮件合并及批量生成单个文档

数据源为excel,word中建立表模板,利用邮件合并功能实现批量填表,利用VBA技术将填表结果分成独立的文档

L358352523

EXCEL与WORD相互写入VBA代码

EXCEL与WORD相互写入VBA代码 在工作中相当方便,如写财务分析,在EXCEL中完成数据加工,并用公式写出部分财务分析指标,再将这些文字与数据写入WORD,相当的实用

yanfulin303

VBA代码把一个多页的word拆分成任意页数的多个文档

VBA代码把一个多页的word拆分成任意页数的多个文档,可直接粘贴运行。

YuYANG_Survy
评论
收藏 已收藏
分享
返回顶部
谬35
Office开发/ VBA 5,174 成员 17,906 内容