如何缩进bullet ppt vba

如何缩进bullet ppt vba,vba,powerpoint,indentation,bulletedlist,Vba,Powerpoint,Indentation,Bulletedlist,我对PPT文件中文本框中VBA中的项目符号有问题 我使用以下代码修改项目符号中的现有文本: 它给了我: 一, 二, 三, 我想制作一个在“3”下带有“4”的子项目符号。 我试过这个: 它只给了我: 一, 二, 三, {Some Space}4 但我不知道我想要什么。我试过了,但是没有成功 我错在哪里 谢谢你的帮助:) 编辑:我尝试过一些建议,但对我的演示文稿不起作用。以下是我尝试过的: > .TextFrame.TextRange.Paragraphs(4).IndentLevel

我对PPT文件中文本框中VBA中的项目符号有问题

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

它给了我:

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

它只给了我:

  • 一,
  • 二,
  • 三,
  • {Some Space}4
但我不知道我想要什么。我试过了,但是没有成功

我错在哪里

谢谢你的帮助:)

编辑:我尝试过一些建议,但对我的演示文稿不起作用。以下是我尝试过的:

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

每一次,它都毫无作用,我可以看到缩进水平在增长,但我的子弹没有缩进

您看到了额外的空间,因为您的原始代码中有
chr(9)
,这是一个选项卡字符。所以,尝试使用
vbCrLf
(即回车后换行),而不是
chr(13)&chr(9)


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

这没有缩进第四行,因为我认为这可能取决于演示文稿的风格定义hh-我认为您可能误读了问题。问题不是让项目符号出现,而是进一步缩进了额外的项目符号。
Chr(9)
vbCrLf
方法都会生成简单的项目符号列表,但它们不会按照问题的要求缩进第四个项目符号。输入文本后,请尝试
PptDoc.Slides(3).Shapes(3).TextFrame.TextRange.parations(4).IndentLevel=2
,此处不起作用:(我可以看一下您的powerpoint文件吗?如果可以,请上传到wikisend.com并在此处共享链接。另外,请确认MS Office版本。正如Sid在上面所评论的,您可以使用
段落
,也可以使用
。使用
段落
可能更可靠。我可能在某个地方遇到了真正的问题,但这些都不是。)工作:(在我的幻灯片中,如果我只是在最后一行键入制表符,它会缩进,我不敢相信,这在一个新的空白演示文稿上是如此。创建一个基本标题+内容幻灯片。看看它是否有效-使用缩进级别(设置为1、2、3、4)然后看看它是否有区别。在一个新的空白演示文稿上报告它是否正常工作。我不明白为什么不在我的演示文稿中。您可能已将内置样式定义为不缩进任何级别的项目符号。您可以更改此[此处为2003年]()或[此处为更高版本]()
> .TextFrame.TextRange.Paragraphs(4).IndentLevel = 2
> 
> .TextFrame.TextRange.Lines(4).IndentLevel = 2
.TextFrame.TextRange.Text = "1" & vbCrLf & "2" & vbCrLf & "3" & vbCrLf & "4"
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