У меня есть пользовательская форма, которая имеет текстовое поле и любое значение, помещенное в текстовое поле, будет определять количество динамических элементов управления, которые добавляются в пользовательскую форму, а затем есть кнопка и один раз, щелкните Я хочу, чтобы динамические элементы управления были полностью удалены из пользовательской формы.удаление элементов управления, добавленных во время выполнения
Ниже показан код, который используется для создания динамических элементов управления и этот код работает отлично
For i = 1 To TextBox1.Value
newPosition = 360
Set cLabel = Me.Controls.Add("Forms.Label.1")
With cLabel
.Caption = "Label " & (i)
.Font.Size = 8
.Font.Bold = True
.Font.Name = "Tahoma"
'.Left = 70
.Left = 36
.Top = switchBoardLevel
.Width = 130
End With
switchBoardLevel = switchBoardLevel + newPosition
Set cButton = Me.Controls.Add("Forms.CommandButton.1")
With cButton
.Name = "CommandButton" & i
.Caption = "Calculate"
.Left = 300
.Top = buttonStartPosition
.Width = 45
.Height = 18
End With
ReDim Preserve TextListBox(1 To i)
Set TextListBox(i).ButtonGroup = cButton
buttonStartPosition = buttonStartPosition + newPosition
Next i
Однако существует проблема, когда дело доходит до удаления динамически созданных элементов управления. Я попробовал множество способов удалить элементы управления. Код ниже выполняется, когда кнопка нажата, чтобы удалить элементы управления, но это просто не сработает для меня, и я обхожусь кругами, поэтому было бы очень полезно, если бы кто-нибудь мог дать мне некоторое руководство по этой проблеме.
For Each TextListBox(i).ButtonGroup In Me.Controls
If (TypeOf TextListBox(i).ButtonGroup Is CommandButton) Then
TextListBox(i).ButtonGroup.Visible = False
End If
Next
К сожалению я только получить шанс, чтобы вернуться для вас на этом посту, но это исправление не сработало, потому что по какой-то причине «UBound» появляется как -1! – user3538102
Кажется, ваш массив был потерян. Где это объявлено? – Rory