[Webinar] Streamline your web hosting managementRegister Today

  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 355
  • Last Modified:

create a determined number of comboboxes at runtime on userform and fill each one seperately

vba excel 2013
Mutipage tab control --specifically tab9

The following code generates a combobox at runtime on a userform and specifically tab9

Private Sub UserForm_Initialize()
Dim cbo As MSForms.ComboBox

    Set cbo = Me.MultiPage1.Pages(8).Controls.Add("Forms.Combobox.1")
    cbo.Left = 10
    cbo.Top = 10
End Sub With cbo
       .AddItem "Date"
       .AddItem "Player"
       .AddItem "Team"
       .AddItem "Goals"
       .AddItem "Number"
End With

Now what i need:

01---I need to be able to create and call up to 3 comboboxes.

02--- The comboboxes need to be aligned next to each other.

03-- I may or may not call all three at any given time.

combobox1 would have items:

With cbo1
       .AddItem "1/2 INCH"
       .AddItem "3/4 INCH"
       .AddItem "1 INCH"
       .AddItem "1 1/2 INCH"
       .AddItem "2 INCH"
End With

With cbo2
       .AddItem "ADAPTER"
       .AddItem "BRASS"
       .AddItem "GALVANIZED"
       .AddItem "STEEL"
       .AddItem "312 STEEL"
End With

With cbo3
       .AddItem "BOLT"
       .AddItem "HHCS"
       .AddItem "SHCS"
       .AddItem "SET SCREWS"
       .AddItem "LAG SCREW"
End With

  • 3
  • 2
1 Solution
Rory ArchibaldCommented:
Why are you creating them at runtime? Why not create them at design time and set the visible property to False until such time as you want them visible.
FordraidersAuthor Commented:
Because sometimes i need certain comboboxes in certain positions..
in certain sequences.

i could just would like to have this as a backup plan.
Rory ArchibaldCommented:
OK - here's an example

Private Sub UserForm_Initialize()
   Dim cbo                    As MSForms.ComboBox
   Dim n                      As Long
   Dim NumControls            As Long
   Dim avItems(1 To 3)
   Dim dComboWidth            As Double

   NumControls = 2
   dComboWidth = 75

   avItems(1) = Array("Date", "Player", "Team", "Goals", "Number")
   avItems(2) = Array("1/2 INCH", "3/4 INCH", "1 INCH", "1 1/2 INCH", "2 INCH")
   avItems(3) = Array("ADAPTER", "BRASS", "GALVANIZED", "STEEL", "312 STEEL")

   For n = 1 To NumControls

      Set cbo = Me.MultiPage1.Pages(8).Controls.Add("Forms.Combobox.1", "cbo" & n, True)
      With cbo
         .Left = (n - 1) * dComboWidth + 10
         .Top = 10
         .Width = dComboWidth
         .List = avItems(n)
      End With
   Next n
End Sub

Open in new window

FordraidersAuthor Commented:
Thanks rorya,
just a quick side:

avItems(3) = Array("ADAPTER", "BRASS", "GALVANIZED", "STEEL", "312 STEEL" )

with the folowinf array.
If i need to carry Items to fill to a next line syntax for that ?

avItems(3) = Array("ADAPTER", "BRASS", "GALVANIZED", "STEEL", "312 STEEL"  &  _

FordraidersAuthor Commented:
Thanks very much

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now