情缘侠 2024-04-02 11:41 采纳率: 33.3%
浏览 5
已结题

选中的编码段落改为圆圈字

选中的编码段落改为圆圈字
请问下列代码,为什么每次只能替换一个,


```vb.net
Sub 选中的编码段落改为圆圈字()
    Dim para As Paragraph
    Dim firstLine As String
    Dim firstNumber As Integer
    Dim newBullet As String

    ' 检查是否选中了文本
    If Selection.Type = wdSelectionIP Then
        MsgBox "请选中要处理的段落文本!", vbExclamation
        Exit Sub
    End If
    
    ' 循环处理每个选中的段落
    For Each para In Selection.Paragraphs
            ' 获取段落的文本
        firstLine = para.Range.Text
        ' 去除文本中的空格和其他非数字字符
        firstLine = Trim(firstLine)
        If IsNumeric(Left(firstLine, 1)) Then
              ' 获取首行的数字
            firstNumber = Val(Left(firstLine, 2))
            If firstNumber > 10 Then
                ' 使用圆圈字替换数字
                 newBullet = ChrW(9323 + firstNumber - 12) & " " ' 中圆圈字的11-20字符
                ' 将替换后的字符应用到段落中
                para.Range.ListFormat.ApplyBulletDefault
                MsgBox firstNumber
                para.Range.Text = Replace(para.Range.Text, Left(firstLine, 2), newBullet, 1, 1)
                Else
                ' 使用圆圈字替换数字
                newBullet = ChrW(9312 + firstNumber - 1) & " " ' Unicode编码中圆圈字的1-10字符
                ' 将替换后的字符应用到段落中
                para.Range.ListFormat.ApplyBulletDefault
                If firstNumber = 10 Then
                    para.Range.Text = Replace(para.Range.Text, Left(firstLine, 2), newBullet, 1, 1)
                    Else
                    para.Range.Text = Replace(para.Range.Text, Left(firstLine, 1), newBullet, 1, 1)
                End If
            End If
        End If
    Next para
End Sub


```

  • 写回答

4条回答 默认 最新

  • 情缘侠 2024-04-02 12:40
    关注

    我自己已经解决了,但是

    Sub 选中的编码段落改为圆圈字()
        Dim rng As Range
        Dim para As Paragraph
        Dim i As Long
        
        ' 确保已选中区域
        If Selection.Range.Paragraphs.Count = 0 Then Exit Sub
        
        ' 遍历每个段落
        For Each para In Selection.Range.Paragraphs
            ' 遍历每个字符
            For i = 1 To para.Range.Characters.Count
             firstLine = para.Range.Text
            ' 去除文本中的空格和其他非数字字符
            firstLine = Trim(firstLine)
            If IsNumeric(Left(firstLine, 1)) Then
                  ' 获取首行的数字
                firstNumber = Val(Left(firstLine, 2))
                If firstNumber > 10 Then
                    ' 使用圆圈字替换数字
                    If firstNumber > 20 Then
                        newBullet = firstNumber ' 大于20的字符不能转换
    
                        Else
                        newBullet = ChrW(9323 + firstNumber - 12) & " " ' 圆圈字的11-20字符
                        End If
                    ' 将替换后的字符应用到段落中
                    para.Range.ListFormat.ApplyBulletDefault
                    'MsgBox firstNumber'消息框
                    para.Range.Text = Replace(para.Range.Text, Left(firstLine, 2), newBullet, 1, 1)
                    Else
                    ' 使用圆圈字替换数字
                    newBullet = ChrW(9312 + firstNumber - 1) & " " ' Unicode编码中圆圈字的1-10字符
                    ' 将替换后的字符应用到段落中
                    para.Range.ListFormat.ApplyBulletDefault
                    If firstNumber = 10 Then
                        para.Range.Text = Replace(para.Range.Text, Left(firstLine, 2), newBullet, 1, 1)
                        Else
                        para.Range.Text = Replace(para.Range.Text, Left(firstLine, 1), newBullet, 1, 1)
                    End If
                End If
            End If
            Next i
        Next para
    End Sub
    

    圆圈字
    9312①、9313②、9314③、9315④、9316⑤、9317⑥、9318⑦、9319⑧、9320⑨、9321⑩、9322⑪、9323⑫、9324⑬、9325⑭、9326⑮、9327⑯、9328⑰、9329⑱、9330⑲、9331⑳
    9461⓵、9462⓶、9463⓷、9464⓸、9465⓹、9466⓺、9467⓻、9468⓼、9469⓽、9470⓾
    ❶、10103❷、10104❸、10105❹、10106❺、10107❻、10108❼、10109❽、10110❾、10111❿
    10112➀、10113➁、10114➂、10115➃、10116➄、10117➅、10118➆、10119➇、10120➈、10121➉
    10122➊、10123➋、10124➌、10125➍、10126➎、10127➏、10128➐、10129➑、10130➒、10131➓
    12872㉈、12873㉉、12874㉊、12875㉋、12876㉌、12877㉍、12878㉎、12879㉏
    12881㉑、12882㉒、12883㉓、12884㉔、12885㉕、12886㉖、12887㉗、12888㉘、12889㉙、12890㉚、12891㉛、12892㉜、12893㉝、12894㉞、12895㉟
    ㊀、12929㊁、12930㊂、12931㊃、12932㊄、12933㊅、12934㊆、12935㊇、12936㊈、12937㊉
    12977㊱、12978㊲、12979㊳、12980㊴、12981㊵、12982㊶、12983㊷、12984㊸、12985㊹、12986㊺、12987㊻、12988㊼、12989㊽、12990㊾、12991㊿

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月16日
  • 已采纳回答 4月8日
  • 创建了问题 4月2日