尝试在PowerPoint中设置形状的.Line.Visible属性时出现未指定的错误

时间:2013-09-10 15:24:56

标签: vba powerpoint powerpoint-vba

我有一个麻烦的问题,影响了一个用户。

我无法在我的机器上复制错误。我正在使用的另一个开发人员也无法在他的机器上复制。但是,我们能够隔离用户计算机上的错误。我正在使用MS Office 2010 / PowerPoint 2010 /等运行Win 7 Enterprise Version 6.1 Build 7600。

.Line.Visible = msoFalse上的一个用户发生了相关错误。错误提升为:

Run-time error '-2147467259 (80004005)':
Method 'Visible' of object 'LineFormat' failed

可见显然是形状.Line属性。我可以在Locals窗口中查看它:

enter image description here

我可以在即时窗口中查询此属性值而不会出现错误:

enter image description here

输入:tb.Line.Visible = msoTrue使该行可见(如预期的那样)

输入:tb.Line.Visible = msoFalse会产生“自动化错误/未指定错误”,代码相同:

enter image description here

以下是一些示例代码。我尝试将tb标注为Shape,但这会产生Type 13 Mismatch错误。我还尝试将属性值设置为0而不是msoFalse,但错误仍然存​​在。

Sub TestCode()
Dim cht as Chart
Dim tb As Object

    Set cht = ActivePresentation.Slides(1).Shapes("Chart 1").Chart
    Set tb = cht.Shapes.AddTextbox(msoTextOrientationHorizontal, ptLeft, tBoxTop, ptWidth, ptHeight) 'NOTE: tb.Type = msoTextBox

    tb.Select  '<--- KEEP THIS LINE OTHERWISE TEXTBOX _
               '     ALIGNMENT WILL NOT WORK 

    With tb
        With .TextFrame2.TextRange.Characters
            .Text = "foo"
        End With
        .Fill.Visible = msoFalse
        .Line.Visible = msoFalse
        .TextFrame2.WordWrap = msoFalse
        .TextFrame2.TextRange.Font.Bold = True
        .TextFrame2.TextRange.ParagraphFormat.Alignment = msoAlignCenter
        .TextFrame2.AutoSize = msoAutoSizeTextToFitShape
    End With
End Sub

此子例程包含在表单按钮单击事件的主错误处理程序中,因此我们不会丢失数据或使应用程序崩溃,但它确实会阻止加载项以所需方式构建图表/图形。

由于默认.Line.Visible msoFalse(所以我可以注释掉有问题的代码行),这不是特别关键,但它确实需要更改代码,重新分配PPAM。

我想知道为什么会发生这种情况,以及是否有一种“修复”这种方法,不涉及评论违规行或采用On Error Resume Next方法。

更新(来自评论,澄清)

此示例是用于处理文本框标注的放置和格式设置的几个此类子例程之一,这些是msoTextBox类型的所有形状,它们都添加到现有形状的形状集合中,例如图表形状

object.Line.Visible = msoFalse的所有类似调用都失败并出现相同的错误。

,每个都会在她的机器上引发同样的错误。其他类似的调用,例如.MajorGridlines.format.Line.Visible = msoFalse会导致错误。

1 个答案:

答案 0 :(得分:0)

这不是一个令人满意的答案,但我只是通过注释掉有问题的代码行来避免错误。因为,当创建TextBox时,此属性已设置为msoFalse,它是冗余代码,可以省略。