Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VBA中添加具有多个属性的文本框_Vba_Textbox_Powerpoint - Fatal编程技术网

在VBA中添加具有多个属性的文本框

在VBA中添加具有多个属性的文本框,vba,textbox,powerpoint,Vba,Textbox,Powerpoint,我正试图用VBA在powerpoint的幻灯片顶部创建一个文本框(这句话让我很难过)。我在网上看到的许多示例似乎并没有使用“Option explicit”宏实践,因为我在示例中看到的一些变量并没有声明或明确键入 无论如何,在这一点上,我只需要生成一个文本框,理想情况下为这个文本框取一个名称,这样我就可以使用它来做一些事情,然后修改这个文本框的参数,比如字体大小。最终,我将使用它,用户可以输入字符串值并创建自己的工作表,使用它作为模板 目前我正在处理这个问题。myDocument是幻灯片,标题是

我正试图用VBA在powerpoint的幻灯片顶部创建一个文本框(这句话让我很难过)。我在网上看到的许多示例似乎并没有使用“Option explicit”宏实践,因为我在示例中看到的一些变量并没有声明或明确键入

无论如何,在这一点上,我只需要生成一个文本框,理想情况下为这个文本框取一个名称,这样我就可以使用它来做一些事情,然后修改这个文本框的参数,比如字体大小。最终,我将使用它,用户可以输入字符串值并创建自己的工作表,使用它作为模板

目前我正在处理这个问题。myDocument是幻灯片,标题是我已经指定的字符串。这绝对是我所需要的,但我不能改变它的任何其他方面,比如字体大小

myDocument.Shapes.AddTextbox(msoTextOrientationHorizontal,左侧:=0,顶部:=10,宽度:=200,高度:=50)。TextFrame.TextRange.Text=title

如果我想将.Font.Size=18添加到属性中,我似乎找不到迄今为止行之有效的方法

我见过一些例子,其中他们使用with-end with语句并设置单个属性,但当我尝试创建一个形状,然后修改单个属性时,我会出错(可能是因为形状没有字体属性)。这是一个我一直试图用作指导方针的页面,但没有太大帮助


我对如何使用文本框对象、如何跟踪它们或为它们指定一个名称以及关于它们的几乎所有内容都很迷茫。这对我来说是一个全新的领域。任何帮助都将不胜感激

它将有助于理解PowerPoint中对象的层次结构。一旦你了解了这一点,你在对象模型中获得东西的大多数方法都会更有意义

应用程序本身包含一个演示文稿集合,每个打开的演示文稿都是该集合的成员

“活动演示文稿”是当前处于活动状态的演示文稿。。。ie,具有焦点,接收鼠标点击/按键

演示文稿包含幻灯片 幻灯片包含形状 大多数形状(尽管不是全部)都可以有文本框 TextFrame包含一个TextRange 文本范围包含文本(您也可以对文本范围应用格式)

因此:


谢谢你的回答,写得很好,很有帮助。我仍然对ppt中的层次概念感到震惊,主要是因为在你可以编辑文本范围之前,它已经进入了兔子洞,但我想我明白我只是试图在错误的层次上更改文本。我只是好奇,为什么我必须用结束语句来改变形状的属性?我不能在没有with语句的情况下显式更改这些值吗?我也会投你一票,但我缺少一个好问题。如果不想,您实际上不必使用With/End With,但它可以大大减少键入(因此加载加载项的速度更小更快),至少在理论上可以使代码运行得更快。在实践中,我怀疑这种差异除了在极端情况下是可以衡量的。
Option Explicit  
' but of course!

Sub MakeATitle()

    Dim oSh As Shape
    Dim myDocument As Presentation
    Dim oSl As Slide
    Dim sTitle As String
    ' I wouldn't use Title as a variable; it may be a reserved word

    sTitle = "Here is your title"

    Set myDocument = ActivePresentation

    ' I'm putting the title on slide 1
    ' Change this as needed, of course
    Set oSl = myDocument.Slides(1)

    Set oSh = oSl.Shapes.AddTextbox(msoTextOrientationHorizontal, _
        Left:=0, Top:=10, Width:=200, Height:=50)

    With oSh.TextFrame.TextRange
        .Text = sTitle
        With .Font
            .Size = 24  ' points
            .Name = "Arial"
        End With    ' Font
    End With    ' TextRange
End Sub