Не раз уже сталкивался за последние дни с этой ерундой, но вот решил спросить у знатоков. Итак: на листе есть кнопка. По ней строится график. График слегка заслоняет кнопку, хочется ее на передний план. Включаю запись, правой кнопкой по кнопке (извините за тавтологию) - на задний план. Появляется вот что:
Именно в двойном экземпляре. Отодвигаю кнопку на задний план, пытаюсь воспроизвести макрос - Can't find project or library и выделено это - msoBringToFront. Что за ерунда? Зачем нужен макрорекодер, если потом невозможно использовать этот код?! Офис 10ый, если что.
Пытался с другого конца:
Код
ActiveSheet.Shapes("Chart1").ZOrder msoSendToBack
те же яйца, только в профиль получились.
Еще интересовал бы ответ - как верным образом записать сей макрос?) Уж очень хочется кнопку на передний план) погуглил, поизголялся - не вышло...
я читал это. но макрос записан на том же самом компе, на котором он и выполнялся. ничего не закрывалось и все такое. как такое может быть? и зачем такое макрорекодерство нужно? мне, как ничего не смыслящему человеку в программировании, просто необходима помощь макрорекодера, а он так себя ведет.
выполняешь - ошибка. переделываешь код, убираешь mso - работает. зачем оно так пишет?) это уже офис 13, конечно.
зачем эта функция, если она не работает?
Цитата
Казанский пишет: Попробуйте подставить значение константы
Код
ActiveSheet.Shapes("Button 3").ZOrder 0
урррра, работает)спасибо большое! вчера сам так делал - не работало, но я вместо ActiveSheet засунул под With worksheet, а там был другой лист указан( так вот, почему макрорекодер пишет не по вашему образцу, а пишет так, что потом сам же воспроизвести не может?)
По ссылке читали, но ничего не поняли, надо полагать. Если ошибка подобная есть - значит есть причина. Константы msoBringToFront входят в состав библиотеки Microsoft Office XX.0 Object Library. У Вас явно нет ссылки на эту библиотеку в Tools-References. Если поставить на неё ссылку - то ошибка изчезнет.
Макрорекордер верно использует синтаксис - он использует константы объектной модели Excel для назначения и использования свойств.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
peat пишет: почему макрорекодер пишет не по вашему образцу, а пишет так, что потом сам же воспроизвести не может?
У макрорекордера есть заданный шаблон на каждое действие. "Воспроизведением" занимается не он, а компилятор VBA. Шаблон макрорекордера составлен с учетом наличия соотв. библиотек - Excel и Офиса. У вас проблема с библиотекой Офиса - идите в Tools - References и разбирайтесь с элементом Microsoft Office xx.x Object Library (xx.x - номер версии Офиса), как описано в статье The_Prist.
The_Prist пишет: По ссылке читали, но ничего не поняли, надо полагать.
там основной посыл - работает на одном компе, а на другом - нет. у меня-то один и тот же комп!
Цитата
The_Prist пишет: Если ошибка подобная есть - значит есть причина. Константы msoBringToFront входят в состав библиотеки Microsoft Office XX.0 Object Library. У Вас явно нет ссылки на эту библиотеку в Tools-References. Если поставить на неё ссылку - то ошибка изчезнет.
да, вы правы, ее нет) спасибо за совет, а то я замучился уже с макрорекодером)
Цитата
The_Prist пишет: Макрорекордер верно использует синтаксис - он использует константы объектной модели Excel для назначения и использования свойств.
ну вот как он его верно использует, если потом не воспроизводит сам себя? зачем конечному пользователю такой синтаксис, если он не работает? может быть, вот это ActiveSheet.Shapes("Button 3" .ZOrder 0 не кошерный, не каноничный и совсем не правильный код, но он работает!! уж такие банальные мелочи хотелось бы от него получать, а не в гугл или на форум лезть.
Ну вот купили машину, а без бензина не едет. Казалось бы банальные мелочи хотелось получить - но надо сначала на заправку...Да и дефлекторы не помешали бы - но надо докупать...И много чего еще.
VBA лишь инструмент, который надо уметь использовать и применять. Макрорекордер - это средство Excel, а VBA потом использует созданные Excel-ем коды. И если не подключать библиотеки Excel-я - то VBA неоткуда будет черпать значения констант, используемых Excel-ем. Какие-то из них подключены по умолчанию. Библиотека в данном случае как банк знаний, в котором содержится перечисление классов, констант и пр.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Какое имя? кнопка у меня одна) но переделаю ее под CommandButton - у нее цвет можно менять и прочие плюшки, нашел у вас на форуме
The_Prist, это все правильно, но ведь если бы он записал код по-другому, то все бы работало без лишних злоключений) хотя люди там не глупые, значит именно в такой записи смысл есть)