Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 检查对象的属性是否有值_Vba_Powerpoint - Fatal编程技术网

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