Страницы: 1
RSS
Конструкция If...Or...Then... выдает ошибку, а условия, разнесенные на два If...Then работают, в названии
 
Вчера, при разборе этой темы, столкнулся со следующим:
вот этот код
Код
Sub SaveText_2()
Dim SH As Object
I = 1
For Each SH In ActiveSheet.Shapes
    With SH.OLEFormat.Object
        If SH.Type <> msoTextBox Or .Text Like "*Внимание*" Then GoTo 10
            Worksheets(2).Range("A" & I).Value = .Text
    End With
I = I + 1
10 Next
End Sub
вылетает с ошибкой на строке If SH.Type<>....Or... Then...Код ошибки: Run-time error 438: Object doesn't support this property or method
Если желаемое записать вот так:
Код
Sub SaveText_3()
Dim SH As Object
I = 1
For Each SH In ActiveSheet.Shapes
    With SH.OLEFormat.Object
        If SH.Type <> msoTextBox Then GoTo 10
        If .Text Like "*Внимание*" Then GoTo 10
            Worksheets(2).Range("A" & I).Value = .Text
    End With
I = I + 1
10 Next
End Sub
все работает.
В чем ошибка? Прилагаю файл с которым вчера "боролись"
Согласие есть продукт при полном непротивлении сторон
 
Так тут все ясно. Если объект не является текстовым полем, то у него нет свойства .Text. А конструкция Or предполагает проверку ВСЕХ записанных в ней условий. И при проверке .Text Like "*Внимание*" получаете ошибку, т.к. для объекта, у которого нет данного свойства это вполне закономерно.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо
Согласие есть продукт при полном непротивлении сторон
Страницы: 1
Наверх