Поскольку ActiveSheet
не обязательно является Worksheet
, это свойство оборачивает ваш лист в Object
, и тогда вам, в основном, нужно угадать, что такое правильные заклинания, и скрестить пальцы, что никаких опечаток нет (Option Explicit
не может спасти вас от кода с поздней привязкой).
Восстановите раннюю привязку как можно скорее, не связывайте вызовы участников с Object
или Variant
.
Dim sheet As Worksheet
Set sheet = ActiveSheet
With sheet.Shapes("FH_btnHideShowCNC")
'Shapes.Item(String) returns a Shape object, so we're early-bound now.
'...
End With
Теперь, когда интерфейс блочной переменной With
известен во время компиляции, вы получите список доступных членов, и код взорвется в время компиляции , если вы пытаетесь вызвать члена, который не существует (например, .Caption
), а не взорваться в время выполнения .