Проверьте, имеет ли свойство объекта значение или нет - PullRequest
0 голосов
/ 11 февраля 2019

Я не мог найти решение для этого на SO или другом источнике.Заранее извиняюсь, если это утомительный вопрос:

У меня есть макрос, который перебирает заполнители в фигурах.Некоторые из этих заполнителей имеют текст, а некоторые нет.Я пытаюсь выяснить, имеет ли .Shapes.Placeholder.TextFrame.TextRange какое-либо значение или нет (в разделе 'watches' редактора VBA это свойство имеет <The specified value is out of range.>).Если это так, сделай что-нибудь.В противном случае продолжите оператор For Each.Тем не менее, все, что я пробовал, выбрасывало ошибки из-за пределов или что-то в этом роде.

Я пробовал:

  • If Not (placeholder.TextFrame.TextRange.Length = 0) Then: Немедленно выбрасывает из-за ошибки
  • Try / catch, которого нет в VBA (Дает мне Sub или Function не зарегистрированы)
  • If Not CStr(placeholder.TextFrame.TextRange) = "0" then

Я совершенно не в себетак как у меня нет опыта работы с Visual Basic.Мне просто нужно, если это свойство пустое или нулевое, пропустить заполнитель.

РЕДАКТИРОВАТЬ: Следуя советам, я попробовал это:

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 Is Nothing.Я сделал синтаксическую ошибку?

ФИНАЛЬНОЕ РЕДАКТИРОВАНИЕ: Оказывается, в конце концов, в SO был ответ .Для этой конкретной проблемы было достаточно добавить On Error Resume Next сразу после For Each.

...