我有一个麻烦的问题,它正在影响一位用户。
我无法在我的机器上复制错误。我正在与之合作的另一位开发人员也无法在他的机器上复制。不过,我们能够隔离用户机器上的错误。我正在运行带有 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
产生“自动化错误/未指定错误”,代码相同:
这是一些示例代码。我尝试过尺寸标注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
出错。