如何缩进bullet ppt vba

时间:2013-11-27 16:48:07

标签: vba powerpoint indentation bulletedlist

我在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
  • {Some Space} 4

但是id并不是我想要的。我试过.IndentLevel,但从未成功。

我哪里错了?

感谢您的帮助:)

编辑:我已经尝试了一些命题,但是我的演示文稿从未在我的演示文稿中运行:

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

每次,它绝对没有任何东西,我可以看到IndentLevel在增长,但我的子弹不会缩进。

2 个答案:

答案 0 :(得分:0)

您看到的是额外的空间,因为原始代码中包含chr(9) Tab 字符。因此,请尝试vbCrLf(回车后跟换行)而不是chr(13) & chr(9)

.TextFrame.TextRange.Text = "1" & vbCrLf & "2" & vbCrLf & "3" & vbCrLf & "4"

答案 1 :(得分:0)

我创建了一个带有标准文本框的基本幻灯片作为第二个' Shape'。以下代码将第四行缩进到第二个项目符号级别(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