Вчера, при разборе этой темы, столкнулся со следующим: вот этот код
Код
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 "*Внимание*" получаете ошибку, т.к. для объекта, у которого нет данного свойства это вполне закономерно.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...