Удаление элементов управления из пользовательской формы Excel с помощью VBIDE

Мне нужно удалить некоторые элементы управления из 75 пользовательских форм Excel . Я получил код VBA зацикливая файлы и используя VBIDE , я удалил код. Однако они не смогли получить контроль над элементами управления.

Вместо того, чтобы тратить время на код, который я попробовал, вот объект, который я использовал:

 Dim VBProj As VBIDE.VBProject Dim VBComp As VBIDE.VBComponent Dim CodeMod As VBIDE.CodeModule Dim CompItem As Object Dim objVBFrm As UserForm Set VBProj = ActiveWorkbook.VBProject Set VBComp = VBProj.VBComponents("frmSend") Set CodeMod = VBComp.CodeModule Set objVBFrm = VBComp.Designer With objVBFrm .Controls.Remove chkNewCNV End With 

Спасибо всем

    возможно, я не получил вашу точную цель, но то, что следует, должно помочь вам начать хотя бы

     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») в соответствии с вашими потребностями

    как и для ошибки «Недопустимая обратная ссылка», может быть загружена пользовательская форма «frmSend», когда вы пытаетесь изменить (удалить) свои элементы управления. если это так, вы должны его выгружать (только скрывать это не сработает), затем действовать на него и, наконец, загрузить его. или может случиться так, что вы должны запустить логический диск удаления перед удалением элемента управления или сочетанием двух … и тогда еще могут возникнуть некоторые проблемы из-за фактического времени всех этих операций (разгрузка формы, ее обработка и его элементы управления / логика), которые им неправомерно (хотя и непроизвольно) мешают.

    Чтобы избавиться от этих (и может быть других!) Возможных побочных эффектов, простым решением может быть просто скрытие нежелательных элементов пользовательской формы и что вы можете сделать это прямо в своем коде, который загружает пользовательскую форму перед ее показом. Или, если вы «должны» действовать программно, вы можете добавить эти «скрывающие» обработки строк кода (вместо удаления) логику

    Interesting Posts

    Несколько условий в Excel 2002

    Сохранить результат запроса sqlite в excel с perl

    Чтение Excel в C #

    Использование подстановочных знаков для извлечения текста из строки ячейки, содержащей конкретное значение / символ

    Excel VBA: как вставить формулу в область ячеек?

    Элементы слияния диапазона Excel VBA и смещение

    Excel: как установить проверку данных списка для указания столбца в именованном диапазоне

    Как преобразовать Список объектов со строкой JSON в Excel

    Удалить лист, если лист не соответствует основным критериям

    Возможно ли, что AutoFit Excel Interop игнорирует скрытые строки?

    Обновление сводной таблицы, созданной в Excel Vba (подключение ADODB)

    Strip Excel файл макросов с C #

    Я не смог бесконечно пытаться написать код в VBA, чтобы вставить эту формулу в ячейку

    использование Excel OnKey без переопределения поведения по умолчанию

    Бланк не обнаруживается в коде XSSFWorksheet

    Давайте будем гением компьютера.