Я не мог найти решение для этого на 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
.