Home » excel » excel – How to dynamically position textboxes one below the other in vba

excel – How to dynamically position textboxes one below the other in vba

Posted by: admin May 14, 2020 Leave a comment

Questions:

I am working on a Userform where I want to add textboxes every time I click a commandButton. The below code does this :

Private Sub CommandButton1_Click()
    Dim editBox As Control   
    Set editBox = UserForm1.Controls.Add("Forms.TextBox.1")
End Sub

However I think I only add one textbox on click, am I right ? If so, is there a way to add as many textbox as I click on commandButton ?

Also my big issue is to position each textboxes added below each other like in column. Is there a way to do it ?
Or do you suggest me to change the way to add textboxes ?

Thank you

How to&Answers:

Arrange textboxes created on the fly

Each click creates a new textBox, without assigning a (changing) value to the .Top property they got overlapped. Without a name you won’t be in the position to refer to them later.

Private Sub CommandButton2_Click()
    Static i
    Dim editBox As MSForms.Control
    Set editBox = Me.Controls.Add("Forms.TextBox.1")
    i = i + 1
    editBox.Name = "myBox" & i
    editBox.Top = i * editBox.Height
End Sub