Vba 代码用于设置缩进级别 2 中选定文本的边距

Vba 代码用于设置缩进级别 2 中选定文本的边距

嗨,我有以下提及的代码,它设置了第二段的缩进级别。我对这段代码有两个问题。

  1. 当选择多个段落时,缩进仅对选定的最后一段起作用。
  2. 无法使用此代码设置边距。因为我想合并“文本前 1.2”和“特殊悬挂 0.46 厘米”

    Sub selectedLevel() Dim otr2 As TextRange2 ' 假设占位符已被选中 Set otr2 = ActiveWindow.Selection.ShapeRange(1).TextFrame2.TextRange.Paragraphs(GetPara) With otr2.ParagraphFormat .IndentLevel = 2 End With End Sub

函数 GetPara() 只要 Dim lngStart 只要 Dim oshp 作为形状 Dim L 只要出现错误则继续下一步 lngStart = ActiveWindow.Selection.TextRange.Start 如果 Err.Number <> 0 则退出函数结束如果出现错误则转到 0 设置 oshp = ActiveWindow.Selection.ShapeRange(1) 如果 (oshp.HasTextFrame) 则对于 L = 1 到 oshp.TextFrame2.TextRange.Paragraphs.Count 如果 (oshp.TextFrame2.TextRange.Paragraphs(L).Start <= lngStart) 并且 ((oshp.TextFrame2.TextRange.Paragraphs(L).Start + oshp.TextFrame2.TextRange.Paragraphs(L).Length - 1) >= lngStart) 则 GetPara = L 退出函数结束如果下一步 L 结束如果结束函数

请帮助我定制此代码并运行子程序。

谢谢

答案1

你好,我已经解决了有关保证金的第一个问题。

但是当我选择多个段落时,所有段落都不会缩进

下面的代码用于设置预定义的 MARGIN

    Sub selectedLevel()
    Dim otr2 As TextRange2
Set otr2 = ActiveWindow.Selection.ShapeRange(1).TextFrame2.TextRange.Paragraphs(GetPara)
With otr2.ParagraphFormat
.LeftIndent = 0.9 * 39
.FirstLineIndent = -(0.5 * 29)
  End With
  End Sub




 Function GetPara() As Long
  Dim lngStart As Long
 Dim oshp As Shape
 Dim L As Long
 On Error Resume Next
  lngStart = ActiveWindow.Selection.TextRange.Start
  If err.Number <> 0 Then
   Exit Function
  End If
   On Error GoTo 0
    Set oshp = ActiveWindow.Selection.ShapeRange(1)
   If (oshp.HasTextFrame) Then
     For L = 1 To oshp.TextFrame2.TextRange.Paragraphs.Count
       If (oshp.TextFrame2.TextRange.Paragraphs(L).Start <= lngStart) And 
   ((oshp.TextFrame2.TextRange.Paragraphs(L).Start + 
        oshp.TextFrame2.TextRange.Paragraphs(L).Length - 1) >= lngStart) Then
          GetPara = L
          Exit Function
        End If
       Next L
     End If
     End Function

请帮助我在所有段落中应用这个子程序。

相关内容