如何缩进项目符号ppt vba

问题描述 投票:0回答:2

我在 PPT 文件文本框中的 VBA 中出现项目符号问题。

我使用以下代码来修改项目符号中的现有文本:

PptDoc.Slides(3).Shapes(3).TextFrame.TextRange.Text = "1" & Chr(13) & "2" & Chr(13) & "3"

它给了我:

  • 1
  • 2
  • 3

我想在“3”下面制作一个带有“4”的子项目符号。 我试过这个:

.TextFrame.TextRange.Text = "1" & Chr(13) & "2" & Chr(13) & "3" & chr(13) & chr(9)& "4"

它只给我:

  • 1
  • 2
  • 3
  • {一些空间}4

但是 id 不是我想要的。我尝试使用 .IndentLevel,但从未成功。

我哪里错了?

感谢您的帮助:)

编辑:我尝试了一些建议,但它对我的演示文稿不起作用,这就是我尝试过的:

> .TextFrame.TextRange.Paragraphs(4).IndentLevel = 2
> 
> .TextFrame.TextRange.Lines(4).IndentLevel = 2

每次,它都没有做任何事情,我可以看到 IndentLevel 不断增长,但我的项目符号没有缩进。

vba powerpoint indentation bulletedlist
2个回答
0
投票

我创建了一个基本幻灯片,其中一个标准文本框作为第二个“形状”。以下代码将第四行缩进到第二个项目符号级别 (

IndentLevel = 4
)。您的 IndentLevels 可能会以不同的方式指定,但这应该提供一个通用框架,可以从中制定解决方案。

这对我有用:

Sub pleaseIndentBullets()

    Dim pres As Presentation
    Dim sd As Slide
    Dim shp As Shape
    Dim tr As TextRange

    Dim s As String

    s = "1" & Chr(13) & "2" & Chr(13) & "3" & Chr(13) & "4" ' Chr(9) is tab but this doesn't work
    Set pres = ActiveWindow.Presentation
    Set sd = pres.Slides(pres.Slides.Count)
    Set shp = sd.Shapes(2)
    Set tr = shp.TextFrame.TextRange
    tr.Text = s
    tr.Lines(4).IndentLevel = 4

End Sub

0
投票

您看到额外的空格是因为原始代码中有

chr(9)
,这是一个 Tab 字符。因此,请尝试使用
vbCrLf
(即回车符后跟换行符)而不是
chr(13) & chr(9)

.TextFrame.TextRange.Text = "1" & vbCrLf & "2" & vbCrLf & "3" & vbCrLf & "4"
© www.soinside.com 2019 - 2024. All rights reserved.