Всем здравствуйте.
Столкнулся с интересным моментом, которому не могу дать объяснение...
Допустим, имеем пункт меню Menu Editior
Назовем как угодно этот пункт меню и присвоим какой нибудь переменной его значение Name
Затем, если присвоить это значение переменной - то к переменной в качестве имени пункта меню обратиться нельзя.
Код:
Dim strName as String
strName = Menu.Name
' В переменную получаем имя меню, к которому можно обратиться.
MsgBox strName ' Убедились в этом
MsgBox strName.Caption ' Получаем ошибку
Попытка убрать кавычки ни к чему не приводит
Replace(strName, """", "")
Но при этом обращаться таким же методом к Label, image и так далее можно без проблем.
В чем причина? Ограничения или нужен какой то друой подход?
Странно, что ты не получил ошибку ещё раньше (на 2-й строке).
Menu - это название класса. А ты, похоже, используешь его как имя объектной переменной. Так нельзя делать. Для начала присвой своему меню любое другое имя, не пересекающееся с зарезервированными именами.
strName - у тебя не объект, а строка. У неё нет ни свойств, ни методов.
Её нельзя использовать так, как ты хочешь.
Но при этом обращаться таким же методом к Label, image и так далее можно без проблем.
Что же тут печального. Напиши свой класс и он будет работать так, как ты хочешь
Можешь собрать в нём коллекцию всех меню и обращаться к ним по имени.
Есть ещё менее документированные пути. Но зачем тебе так делать, у тебя же не 100 разных меню. Ну максимум 3-5 с подпунктами у каждого.
Можешь посмотреть это. Я не совсем уверен, что ты собрался с этим меню делать.
4, в сововкупе 3 десятка подпунктов.
Ума сначала не хватило сделать логическую структуру, что бы циклом обрабатывать.
А теперь переписывать дофига) Выкрутился переменной.
Определяет чекбокс активного пункта, в переменную сохраняется значение.