Страницы: 1
RSS
удаление объекта с userform
 
Добрый день! как удалить вызванный с методом add объект с формы? не скрыть а именно удалить, имитация delete
Код
Sub создать_форму()
Dim форма As Object, Line As Integer
Dim кнопка As CommandButton, рисунок As Image

Set форма = ThisWorkbook.VBProject.VBComponents.Add(3)
With форма
.Properties("Width") = 200
.Properties("Height") = 160
.Properties("Caption") = ""
End With

Set рисунок = форма.Designer.Controls.Add("forms.image.1", "Pic1", True)
Set кнопка = форма.Designer.Controls.Add("forms.CommandButton.1", "кнопка1")
With рисунок
.Height = 50
.Width = 176
.Left = 10
.Top = 10
.BackColor = &H80FF80
End With

With кнопка
.Height = 60
.Width = 100
.Left = 48
.Top = 70
.Caption = "нажать, чтобы объект сверху удалился"
.WordWrap = True
.Font.Size = 10
End With

With форма.CodeModule
Line = .CountOfLines
.InsertLines Line + 1, "Private Sub кнопка1_Click()"
.InsertLines Line + 2, "msgbox ""сюда макрос"""
.InsertLines Line + 3, "End Sub"
End With

VBA.UserForms.Add(форма.Name).Show
ThisWorkbook.VBProject.VBComponents.Remove форма
End Sub
 
А метод Remove не помогает?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Скрыть будет достаточно ?
Код
With форма.CodeModule
    Line = .CountOfLines
    .InsertLines Line + 1, "Private Sub кнопка1_Click()"
    .InsertLines Line + 2, "If Pic1.Visible = False Then: Pic1.Visible = True: Else Pic1.Visible = False"
    .InsertLines Line + 3, "End Sub"
End With
 
Цитата
Renat898 написал: не скрыть а именно удалить
Цитата
Xapa6apga написал: Скрыть будет достаточно ?
:D
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, нууу мало ли  :oops:
 
Блиииин, а как её удалить ((((
Ничего не могу понять, подключаем библиотеку "Microsoft Visual Basic for Application Extensibility 5.3"
Код
ThisWorkbook.VBProject.References.AddFromGuid _
        GUID:="{0002E157-0000-0000-C000-000000000046}", Major:=5, Minor:=3
Но ничего не работает если нажимать на кнопку (((
Например:
Код
Private Sub кнопка1_Click()
For Each ct In ThisWorkbook.VBProject.VBComponents("UserForm1").Designer.Controls
    c01 = c01 & vbLf & ct.Name
Next
MsgBox c01, , "controls in this userform"
End Sub
Как Так ?!
Почему error 91
 
Цитата
The_Prist написал: А метод Remove не помогает?
я знаю только метод Controls.Remove "Pic1", но он работает только в случае, например
Код
Private Sub Userform_Activate()
Controls.Add("Forms.image.1").Name = "рис1"
End Sub
если на форме расположить объект через toolbox, то remove выдает ошибку
Цитата
Xapa6apga написал: Скрыть будет достаточно?
нет, просто у меня изначально форма создает порядка 30 кнопок - групп, кликнув любую из них, отображаются до 100 кнопок - подгрупп на месте предыдущих, потом опять открываешь начальные кнопки и т.д.) это электронное меню. Мне проще удалять и создавать кнопки
 
Видимо потому, что удалять контролы, созданные при помощи Designer нельзя в момент выполнения проекта. Кажись об этом даже в справке написано. Надо создавать контролы на лету без него. Тогда и обычный userForm.Controls.Remove сработает.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
отображаются до 100 кнопок... это электронное меню
Посмотреть в сторону ListBox? Разрешить выделение множества записей...
 
вообщем я написал прием Controls.Add в модуль создаваемой формы, remove заработал, спасибо The_Prist
 
Цитата
Xapa6apga написал:
Но ничего не работает если нажимать на кнопку (((
Например:
Потому что еще не ассоциирована с формой коллекция Controls. правильно будет так:
Код
For ct = 0 To форма.Designer.Controls.Count - 1
    c01 = c01 & vbLf & форма.Designer.Controls(ct).Name
Next
MsgBox c01, , "controls in this userform"
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
vikttur написал:
Посмотреть в сторону ListBox? Разрешить выделение множества записей...
Я делал с ListViev, так как там можно прокручивать пальцем на экране планшета, но все же не очень юзабельно. В данном случае на каждой кнопке фото блюда, что упрощает процесс принятия заявки. Должно получится что то типа этого:
 
Это всё черная магия )
Страницы: 1
Читают тему
Наверх