我有一个麻烦的问题,影响了一个用户。
我无法在我的机器上复制错误。我正在使用的另一个开发人员也无法在他的机器上复制。但是,我们能够隔离用户计算机上的错误。我正在使用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
会导致不错误。
答案 0 :(得分:0)
这不是一个令人满意的答案,但我只是通过注释掉有问题的代码行来避免错误。因为,当创建TextBox时,此属性已设置为msoFalse
,它是冗余代码,可以省略。