Я пытаюсь создать макрос в Excel, который вставит новую строку в электронную таблицу, а также вставит несколько элементов управления формы в этой строке. Первый элемент управления формы, который я сделал, - DropDown. Обычно код работает, и он вставляет поле DropDown просто отлично и в рабочем порядке. Это код, который я использовал (хотя я немного изменил его с тем же результатом).
Dim Pages As Range
Set Pages = ActiveCell
...
Dim RLForm As Excel.Shape
Set RLForm = ActiveSheet.Shapes.AddFormControl (2, Pages.Offset(0, 1).Left, Pages.Offset(0, 1).Top, Pages.Offset (0, 1).Width, Pages.Offset(0, 1).Height)
RLForm.Select
With Selection
.ListFillRange = "'Forms Material'!$B$1:$B$5"
.LinkedCell = rgFound.Offset (-1, -1).Address
.DropDownLines = 5
.Display3DShading = False
End With
Иногда, по-видимому, наугад, я получаю сообщение об ошибке «Невозможно установить ListFillRange свойство класса DropDown. " Отладчик идентифицирует проблему в первой части набора строк «С выбором». (Если я удаляю строку .ListFillRange, то получаю аналогичное сообщение для строки .LinkedCell. Кроме того, если я пытаюсь пропустить синтаксис «С выделением» и вместо этого выполнить «RLForm.ListFillRange = ...», то у меня возникают идентичные проблемы .) В других случаях я получаю «Объект не поддерживает это свойство или метод». Часто я буду работать над кодом несколько строк после этого, над совершенно не связанными объектами и тому подобным (в последнее время я работал над новым элементом управления формой), и я буду запускать код и получать эти сообщения об ошибках. Когда я попытаюсь запустить его снова, он будет выдавать мне то же сообщение об ошибке. Через некоторое время он будет работать без видимой причины. Часто, если я закрываю редактор VBA и затем снова открываю его, код на некоторое время снова будет работать нормально.
Кажется, что ни причина проблемы, ни решение не имеют какой-либо согласованности, которую я могу определить. В прошлый раз я запустил код, и он работал, затем я изменил расположение нового элемента управления формы, который я добавил несколькими строками ниже, с 20 до 19, и затем я получил сообщение об ошибке. Точно так же это не будет работать, тогда я перезапущу редактор VBA, и он будет работать.
Также очень трудно устранить неполадки, потому что у меня нет никакого контроля над тем, когда я получаю ошибку или когда она работает! : /