Vba 检查对象的属性是否有值
我找不到解决这个问题的办法。如果这是一个令人厌烦的问题,我提前道歉: 我有一个宏,可以遍历形状中的占位符。这些占位符中有些有文本,有些没有。我想弄清楚Vba 检查对象的属性是否有值,vba,powerpoint,Vba,Powerpoint,我找不到解决这个问题的办法。如果这是一个令人厌烦的问题,我提前道歉: 我有一个宏,可以遍历形状中的占位符。这些占位符中有些有文本,有些没有。我想弄清楚 .Shapes.Placeholder.TextFrame.TextRange是否具有任何值(在VBA编辑器的“监视”部分中,此属性具有)。如果有,做点什么。否则,请继续对每个语句执行。然而,我尝试的每件事都抛出了越界错误或类似的东西 我试过: 如果不是(placeholder.TextFrame.TextRange.Length=0),则:立
.Shapes.Placeholder.TextFrame.TextRange
是否具有任何值(在VBA编辑器的“监视”部分中,此属性具有
)。如果有,做点什么。否则,请继续对每个语句执行。然而,我尝试的每件事都抛出了越界错误或类似的东西
我试过:
如果不是(placeholder.TextFrame.TextRange.Length=0),则
:立即抛出越界错误
- Try/catch,在VBA中似乎不存在(提供未注册的子函数或函数)
如果不是CStr(placeholder.TextFrame.TextRange)=“0”,则
由于我没有任何VisualBasic迭代的经验,所以我完全没有深度。我只需要,如果该属性为空或null,跳过占位符
编辑:根据以下建议,我尝试了以下方法:
For Each placeholder In sld.NotesPage.Shapes.Placeholders
If Not (placeholder.TextFrame Is Nothing) Then
If Not (placeholder.TextFrame.TextRange Is Nothing) Then
If Not (placeholder.TextFrame.TextRange.LanguageID Is Nothing) Then
placeholder.TextFrame.TextRange.LanguageID = lng
End If
End If
End If
Next
我仍然在placeholder.TextFrame.TextRange上遇到越界错误,该错误为Nothing
。我犯了语法错误吗
最后一次编辑:结果表明,毕竟在SO中存在一个错误。对于这个特定的问题,在每个
的之后添加On Error Resume Next
就足够了 不要像那样链接您的成员访问(这就是原因)。您需要检查每个相关的中间对象是否为Nothing
。VBA没有像“?”这样的内联空检查运算符。
。你得到的最好结果是什么都没有
,因此你可以一步一步地检查,就像如果不是父项什么都没有那么。。。如果不是孩子什么都不是……我对PPT对象模型不太熟悉,但你是否检查过对象浏览器,看看形状
集合是否返回了可以测试的具有更具体接口的对象?我不明白为什么你会在那行代码中出现越界错误。您可以尝试测试占位符.TextFrame.HasText是否为而不是占位符.TextFrame.TextRange是否为空
?在测试形状是否有文本时,假设变量oSh中有形状引用以供演示,首先测试:if oSh.HasTextFrame(例如,某些形状、线条没有)。然后测试oSh.TextFrame.HasText