может быть, я не получить точную цель, но то, что следует следует помочь вам начать работу по крайней мере
Sub RemoveControlsFromUserForm()
Dim VBP As VBIDE.VBProject
Dim VBC As VBIDE.VBComponent
Dim cntrls As Controls
Dim cntrl As Control
Set VBP = ActiveWorkbook.VBProject
For Each VBC In VBP.VBComponents
With VBC
If .Type = vbext_ct_MSForm And .Name = "UserForm1" Then
Set cntrls = .Designer.Controls
For Each cntrl In cntrls
If TypeName(cntrl) = "CheckBox" Then
If cntrl.Name = "chkNewCNV" Then cntrls.Remove cntrl.Name
End If
Next cntrl
End If
End With
Next VBC
End Sub
просто изменить тип компонента (vbext_ct_MSForm) и название («UserForm1»), а также контрольных («CheckBox», «chkNewCNV») в соответствии с вашим пе eds
как для ошибки «Недопустимая обратная ссылка», может быть, пользовательская форма «frmSend» загружается, когда вы пытаетесь изменить (удалить) свои элементы управления. Должно быть, это должно быть так, вы должны его выгружать (только скрывать это не сработает), тогда действуйте на нем и, наконец, загрузите его. , или может быть, что вы должны запустить логический диск удаления перед удалением элемента управления или сочетание двух ... , а затем все еще могут возникнуть некоторые проблемы из-за фактического времени всех этих операций (разгрузка формы, обрабатывать его и его элементы управления/логики), чтобы они неправомерно (хотя и непроизвольно) вмешивались.
Чтобы избавиться от возможных (и может быть других!) Возможных побочных эффектов, простым решением может быть просто скрытие нежелательных элементов пользовательской формы и что вы можете сделать это прямо в своем коде, который загружает пользовательскую форму перед ее показом. Или, если вы «должны» действовать программно, вы можете добавить эти «скрывающие» обработки строк кода (вместо удаления) логика
Скопировал ваш код и изменил UserForm1 на мое имя пользовательской формы, frmSend. Мы подошли ближе, элементы управления были найдены. Получите эту ошибку на cntrls.Remove cntrl.Name «Не удалось удалить элементы управления. Неверная обратная ссылка или ссылка на несвязанный тип». – Willie
Извините, я не объяснил цель. У меня есть файл Excel, который используется для внесения изменений в пакет файлов Excel. Он просматривает все файлы в папке, открывает, изменяет и закрывает. Что мне нужно сделать с этими 75 файлами, это удалить три элемента управления из пользовательской формы и логику для них. Я удалил логику, но не могу удалить элементы управления. – Willie