5

我有一个麻烦的问题,它正在影响一位用户。

我无法在我的机器上复制错误。我正在与之合作的另一位开发人员也无法在他的机器上复制。不过,我们能够隔离用户机器上的错误。我正在运行带有 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 窗口中查看它:

在此处输入图像描述

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

在此处输入图像描述

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

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

在此处输入图像描述

这是一些示例代码。我尝试过尺寸标注tbShape但这会产生Type 13 Mismatch错误。我也尝试将属性值设置为0msoFalse但错误仍然存​​在。

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出错。 

4

1 回答 1

0

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

于 2013-10-23T14:04:24.690 回答