VBA宏设置PPT形状填充色失败求助及With函数用法解惑
问题分析与修正方案
代码错误点及原因
填充色设置无效的核心问题
你写的With Shape是错误的:Shape是VBA中的对象类名,不是你刚创建的那个文本框对象实例。必须用之前赋值的oSh变量(也就是你刚添加的文本框形状)来调用With,否则代码无法定位到要设置的目标形状,填充色自然不会生效。With语句的正确用法
With语句的作用是对同一个特定对象批量执行操作,语法为With [具体对象变量],在块内用.代替对象名。比如你对oSh.TextFrame.TextRange使用With就是正确的,因为明确指定了具体的文本范围对象。
修正后的完整代码
Sub TBU() Dim oSh As Shape Dim myDocument As Presentation Dim oSl As Slide Dim sTitle As String sTitle = "TBU" Set myDocument = ActivePresentation Set oSl = myDocument.Slides(Application.ActiveWindow.View.Slide.SlideIndex) Set oSh = oSl.Shapes.AddTextbox(msoTextOrientationHorizontal, _ Left:=600, Top:=10, Width:=155, Height:=50) ' 修正:用oSh代替Shape,指定具体的文本框对象 With oSh .Fill.ForeColor.RGB = RGB(255, 255, 0) End With With oSh.TextFrame.TextRange .Text = sTitle With .Font .Size = 24 .Name = "Arial" End With End With End Sub
额外优化建议
- 可以把文本框的位置和尺寸改成相对幻灯片的百分比,避免在不同尺寸的幻灯片上位置偏移,示例代码:
' 按幻灯片宽度的80%、高度的5%定位文本框 Left:=oSl.Master.Width * 0.8, Top:=oSl.Master.Height * 0.05
内容的提问来源于stack exchange,提问作者dw45824
相关产品推荐
相关产品推荐

