#excel #vba
#преуспеть #vba
Вопрос:
Я бы хотел добавить поле со списком из элемента управления ActiveX с помощью VBA. Всякий раз, когда я выполняю приведенный ниже код, я могу сгенерировать поле со списком, однако я продолжаю получать сообщение, в котором говорится: «В данный момент невозможно перейти в режим прерывания». Почему это происходит и как я могу избежать появления этого сообщения?
Ниже приведен код, который я использовал.
Sheets("Data Transfer").OLEObjects.Add(classtype:="Forms.CommandButton.1", Link:=False _
, DisplayAsIcon:=False, Left:=265, Top:=465, Width:=108.125, Height:= _
30).Select
Комментарии:
1. Я не могу повторить вашу проблему. Сообщение обычно связано с точками останова, установленными в коде, чаще всего в целях отладки. Есть ли у вас такие брейк-пойнты? Еще одна причина , которую я предполагаю , — это ваше использование
Select
. Вы не должны ничего выбирать в своем коде и, скорее всего, вам также не следует выбирать новое поле со списком. Если ваш код засоренSelect
одним из них, возможно, попытка вызвать незаконный разрыв. ИспользуйтеRange
объект вместоSelection
объекта во всем вашем коде.2. @Variatus У меня не было никаких брейк — пойнтов . Я попробовал другую версию без выбора и все равно получил тот же результат.
Sheets("Data Transfer").OLEObjects.Add "Forms.CommandButton.1", _ Left:=10, Top:=10, Height:=20, Width:=100
3. @Variatus Эта проблема решена, но я не понимаю, почему. Это решается, когда я запускаю всю программу сразу. Но когда я нажимаю F8 для запуска программы, это вызывает у меня эту проблему. могу ли я узнать, почему это так?
4. По сути, создание поля со списком — это процесс, включающий несколько программных шагов, таких как создание OLEObject в памяти, подключение его к листу, придание ему видимой формы и присвоение размеров этой форме. VBA не поддерживает прерывание этого процесса. По мере прохождения кода VBA каким-то образом получает представление о том, что вы пытаетесь запустить часть этого процесса и прерываете его на середине. Если это не то, что вы пытаетесь сделать, это будет выглядеть как ошибка. Однако, поскольку я не смог воспроизвести ошибку, ваше приложение Excel выглядит иначе, чем мое. Попробуйте «восстановить» его.