Я хочу добавить динамические c элементы управления пользовательской формы, такие как (метки, текстовые поля) во время выполнения, когда пользователь активирован в следующем порядке.
Я хочу что-то вроде следующего
, когда пользователь активируется, нужно спросить у пользователя количество полей, которые он / она хочет вставить? если пользователь ответит 7, то нужно добавить поле в следующем порядке " 3 порядка столбцов "
Текстовое поле Label1 Текстовое поле Label2 Текстовое поле Label33
Текстовое поле Label4 Текстовое поле Label55 Label6 textbox6
Label7 textbox7 ........ и т. Д. В зависимости от номера поля пользователя.
Запрос на улучшение в коде:
я попробовал следующие коды:
Private Sub UserForm_Initialize()
Dim i As Long
number = 10 'InputBox("Enter no of text-boxes and labels you wish to create at run-time", "Enter TextBox & Label Number")
Dim txtB1 As control
For i = 1 To 5
Set txtB1 = Controls.Add("Forms.TextBox.1")
With txtB1
.Name = "txtBox" & i
.Height = 20
.Width = 50
.Left = 70
.Top = 20 * i * 1
End With
Next i
For i = 6 To 10
Set txtB1 = Controls.Add("Forms.TextBox.1")
With txtB1
.Name = "txtBox" & i
.Height = 20
.Width = 50
.Left = 200
.Top = 20 * i - 100 * 1
End With
Next i
Dim lblL1 As control
For i = 1 To 5
Set lblL1 = Controls.Add("Forms.Label.1")
With lblL1
.Caption = "Label" & i
.Name = "lbl" & i
.Height = 20
.Width = 50
.Left = 20
.Top = 20 * i * 1
End With
Next i
For i = 6 To 10
Set lblL1 = Controls.Add("Forms.Label.1")
With lblL1
.Caption = "Label" & i
.Name = "lbl" & i
.Height = 20
.Width = 50
.Left = 150
.Top = 20 * i - 100 * 1
End With
Next i
Dim q As Long
For q = 1 To 5
Controls("lbl" & q) = Cells(1, q)
Next q
For q = 6 To 10
Controls("lbl" & q) = Cells(1, q)
Next q
End Sub