Привет. Помогите, пжста. Видела уже что-то подобное, но под себя не смогла адаптировать.
В зависимости от значения textbox 2 на странице multipage во фрейме добавляются textbox и combox Код такой:
Код
Private Sub TextBox2_Change()
Dim i As Byte
Dim МойЛБ As MSForms.ComboBox
Dim МойТБ As MSForms.TextBox
If TextBox2.Value >= 3 And TextBox2.Value <> "" Then
For i = 1 To TextBox2.Value - 2
Set МойТБ = Для_Разбивки.MultiPage1.Pages(1).Controls("Frame1").Add("Forms.TextBox.1")
With МойТБ
.Width = TextBox4.Width
.Height = TextBox4.Height
.Left = TextBox4.Left
.Top = TextBox4.Top + i * (TextBox4.Top - TextBox3.Top)
.Font.Name = Tahoma
.Font.Size = 10
.Name = "МойТБ" & i
End With
Set МойЛБ = Для_Разбивки.MultiPage1.Pages(1).Controls("Frame1").Add("Forms.ComboBox.1")
With МойЛБ
.Width = ComboBox1.Width
.Height = ComboBox1.Height
.Left = ComboBox1.Left
.Top = ComboBox1.Top + i * (ComboBox1.Top - DopBOX.Top)
End With
Dim j As Byte
For j = 1 To 86
МойЛБ .AddItem (Workbooks("имя").Worksheets("имя").Cells(j, 1).Value)
Next j
Next i
ElseIf TextBox2.Value = "" Then
Вот сюда код на удаление нужен всех программно добавленных боксов. Во фрейме еще 3 текстбокса и 1 комбо, они само собой остаться должны, хотя их программно все равно не удалить, т.к. они добавлены в ручную сразу на форму.
Next
ElseIf TextBox2.Value <= 2 Then
Exit Sub
End If
End Sub
Пример такой видела в теме:
Код
Dim объект As Control
For Each объект In Me.Controls
If объект.Name <> "CommandButton1" Then Controls.Remove объект.Name
Next
Там что-то на кнопке завязано. Под мой код не получается, то пишет, что метод не поддерживается, то объект не определен. Я не спец, просто пишу не правильно, по разному пыталась. В общем, нужна помощь).Спасибо.
Evilin написал: Для_Разбивки.MultiPage1.Pages(1).Controls("Frame1").Remove МойТБ1 ошибка " нельзя удалить контрол, метод нельзя использовать в данном контексте"
Вы контейнер пытаетесь удалить, может с именами напутали?
Сочинила решение сама уже. Все везде нормально было, просто почему-то нужно отдельный объект, наверное все-таки вводить. Комбобоксы я переименовала для личного удобства с "МойЛБ" (листбоксы сначала были) на "МойКБ"
Спасибо кто пытался разобраться)) Заработал такой код:
Код
ElseIf TextBox2.Value = "" Then
Dim объект As MSForms.Control
For Each объект In Для_Разбивки.Controls
If объекты.Name Like "МойТБ*" Then
Для_Разбивки.Controls.Remove объект.Name
ElseIf объект.Name Like "МойКБ*" Then
Для_Разбивки.Controls.Remove объект.Name
End If
Next