I have a userform that shows or hides different controls based on what is selected from ListBox1. It also adjusts the left and top values of the appropriate controls depending on that selection, just to make everything look good. So upon initialization it sets the left and top values of each control to a beginning position, and sets each control .visible = False except for Listbox1. When you make a selection from ListBox1, the appropriate controls become visible and the left and top values are adjusted to make it look uniform. Everything was working really well, but now for some reason it's acting a bit funny.
Here's my issue. When I first open the userform and all that is showing is my Listbox1, when I make a selection everything is in the right spot, except the top values are way too much. I have a button on the form that resets the form by calling the UserForm_Initialize sub. If I click that, and then make another selection from listbox1, the top value of the controls is then correct. So basically the first time I make open the form the top values are wrong, but if I re-call the initialization sub it corrects itself. Any idea why it would do this?
That is my reset button code, so all it is doing is rerunning the initialize sub again, so I don't know why it won't work right the first time running the code.
Any Ideas?
Here's my Initialize sub, in case you're curious.
Thanks
Here's my issue. When I first open the userform and all that is showing is my Listbox1, when I make a selection everything is in the right spot, except the top values are way too much. I have a button on the form that resets the form by calling the UserForm_Initialize sub. If I click that, and then make another selection from listbox1, the top value of the controls is then correct. So basically the first time I make open the form the top values are wrong, but if I re-call the initialization sub it corrects itself. Any idea why it would do this?
Code:
'Reset Form button
Private Sub CommandButton2_Click()
UserForm_Initialize
End Sub
That is my reset button code, so all it is doing is rerunning the initialize sub again, so I don't know why it won't work right the first time running the code.
Any Ideas?
Here's my Initialize sub, in case you're curious.
Code:
Private Sub UserForm_Initialize()
With Me
.Caption = "Select Sample Type"
.TextBox1.Width = 100
.TextBox1.Top = 30
.TextBox1.Left = 10
.TextBox2.Width = 100
.TextBox2.Top = 30 + Me.TextBox1.Height + 20
.TextBox2.Left = 10
'Cu
.TextBox3.Width = 40
.TextBox3.Top = .ListBox2.Top + .ListBox2.Height + 20
.TextBox3.Left = Me.TextBox1.Left + Me.TextBox1.Width + 20
.TextBox3 = "TB3"
'Fe
.TextBox4.Width = 40
.TextBox4.Top = .TextBox3.Top
.TextBox4.Left = .TextBox3.Left + .TextBox3.Width + 100
.TextBox4 = "TB4"
'S
.TextBox5.Width = 40
.TextBox5.Top = .TextBox3.Top + .TextBox3.Height + 10
.TextBox5.Left = .TextBox3.Left
.TextBox5 = "TB5"
'SiO2
.TextBox6.Width = 40
.TextBox6.Top = .TextBox5.Top
.TextBox6.Left = .TextBox4.Left
.TextBox6 = "TB6"
'CaO
.TextBox7.Width = 40
.TextBox7.Top = .TextBox5.Top + .TextBox5.Height + 10
.TextBox7.Left = .TextBox3.Left
.TextBox7 = "TB7"
'Al2O3
.TextBox8.Width = 40
.TextBox8.Top = .TextBox7.Top
.TextBox8.Left = .TextBox4.Left
.TextBox8 = "TB8"
'ISA Cu
.TextBox9.Width = 40
.TextBox9.Top = .TextBox7.Top + .TextBox7.Height + 10
.TextBox9.Left = .TextBox3.Left
.TextBox9 = "TB9"
'ISA Fe
.TextBox10.Width = 40
.TextBox10.Top = .TextBox9.Top
.TextBox10.Left = .TextBox4.Left
.TextBox10 = "TB10"
'ISA S
.TextBox11.Width = 40
.TextBox11.Top = .TextBox9.Top + .TextBox9.Height + 10
.TextBox11.Left = .TextBox3.Left
.TextBox11 = "TB11"
'ISA SiO2
.TextBox12.Width = 40
.TextBox12.Top = .TextBox11.Top
.TextBox12.Left = .TextBox4.Left
.TextBox12 = "TB12"
'ISA CaO
.TextBox13.Width = 40
.TextBox13.Top = .TextBox11.Top + .TextBox11.Height + 10
.TextBox13.Left = .TextBox3.Left
.TextBox13 = "TB13"
'ISA Al2O3
.TextBox14.Width = 40
.TextBox14.Top = .TextBox13.Top
.TextBox14.Left = .TextBox4.Left
.TextBox14 = "TB14"
'Fe3O4
.TextBox15.Width = 40
.TextBox15.Top = .TextBox13.Top + .TextBox13.Height + 10
.TextBox15.Left = .TextBox4.Left
.TextBox15 = "TB15"
.TextBox16.Width = 40
.TextBox16.Top = .TextBox13.Top + .TextBox13.Height + 10
.TextBox16.Left = .TextBox4.Left
.TextBox16 = "TextBox16"
'Conv. #
With .ComboBox1
.Clear
.Width = 40
.Top = Me.TextBox15.Top + Me.TextBox15.Height + 10
.Left = Me.TextBox3.Left
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
End With
.TextBox16.Width = 40
.TextBox16.Top = .ComboBox1.Top
.TextBox16.Left = .TextBox4.Left
.TextBox16 = "TextBox16"
With .ComboBox2
.Clear
.Width = 40
.Top = Me.ComboBox1.Top + Me.ComboBox1.Height + 10
.Left = Me.TextBox3.Left
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
End With
With .ComboBox3
.Clear
.Width = 40
.Top = Me.ComboBox2.Top
.Left = Me.TextBox4.Left
End With
With .ListBox1
.Width = 75
.Top = 25
.Left = 20
.Height = 126
.Visible = True
.SetFocus
End With
.CheckBox1 = True
With .CheckBox1
.AutoSize = True
.Top = Me.TextBox3.Top - .Height - 5
.Left = Me.TextBox3.Left
End With
.ListBox2.Width = 100
.ListBox2.Top = 30
.ListBox2.Left = Me.TextBox1.Left + Me.TextBox1.Width + 20
.ListBox3.Width = 100
.ListBox3.Top = 30
.ListBox3.Left = Me.ListBox2.Left + Me.ListBox2.Width + 30
.Width = Me.ListBox1.Width + 60
.Height = Me.ListBox1.Height + 65
.Image1.Visible = True
With .Image1
.Top = 0
.Left = 0
.Width = Me.Width - 10
.Height = Me.Height - 28
End With
.CommandButton2.Width = 100
.CommandButton2.Left = 10
.CommandButton2.Top = .TextBox2.Top + .TextBox2.Height + 10
.CommandButton3.Top = .TextBox3.Top
.CommandButton3.Left = .TextBox4.Left + .TextBox4.Width + 10
.CommandButton4.Top = .CommandButton3.Top
.CommandButton4.Left = .CommandButton3.Left
.CommandButton5.Top = .CommandButton4.Top + .CommandButton4.Height + 10
.CommandButton5.Left = .CommandButton4.Left
.ListBox1.Clear
.ListBox2.Clear
.ListBox3.Clear
.ListBox4.Clear
For Each fCont In Me.Controls
If fCont.Name <> "ListBox1" And fCont.Name <> "Image1" Then
fCont.Visible = False
End If
Next fCont
For Each fCont In Me.Controls
If i = 24 Then Exit For
If TypeName(fCont) = "Label" Or fCont.Name = "CheckBox1" Then
With fCont
.Font.Bold = True
.Font.Size = 10
.Font.Name = "Ariel"
.AutoSize = True
.Height = fCont.Font.Size + 2
End With
End If
Next fCont
.CheckBox1.Height = 15
With .Label1 'Arrival Time
.Top = Me.TextBox1.Top - (.Height + 1)
.Left = (Me.TextBox1.Width / 2) - (.Width / 2) + Me.TextBox1.Left
End With
With .Label2 'Sample Time
.Top = Me.TextBox2.Top - (.Height + 1)
.Left = (Me.TextBox2.Width / 2) - (.Width / 2) + Me.TextBox2.Left
End With
With .Label3 'Control Room Operator
.Top = Me.ListBox2.Top - (.Height + 1)
.Left = (Me.ListBox2.Width / 2) - (.Width / 2) + Me.ListBox2.Left
End With
With .Label4 'Analyst
.Top = Me.ListBox3.Top - (.Height + 1)
.Left = (Me.ListBox3.Width / 2) - (.Width / 2) + Me.ListBox3.Left
End With
With .Label5 'Cu TB3
.Top = (Me.TextBox3.Height / 2) - (.Height / 2) + Me.TextBox3.Top
.Left = Me.TextBox3.Left - .Width
End With
With .Label6 'Fe TB4
.Top = (Me.TextBox4.Height / 2) - (.Height / 2) + Me.TextBox4.Top
.Left = Me.TextBox4.Left - .Width
End With
With .Label7 'S TB5
.Top = (Me.TextBox5.Height / 2) - (.Height / 2) + Me.TextBox5.Top
.Left = Me.TextBox5.Left - .Width
End With
With .Label8 'SiO2 TB6
.Top = (Me.TextBox6.Height / 2) - (.Height / 2) + Me.TextBox6.Top
.Left = Me.TextBox6.Left - .Width
End With
With .Label9 'CaO TB7
.Top = (Me.TextBox7.Height / 2) - (.Height / 2) + Me.TextBox7.Top
.Left = Me.TextBox7.Left - .Width
End With
With .Label10 'Al2O3 TB8
.Top = (Me.TextBox8.Height / 2) - (.Height / 2) + Me.TextBox8.Top
.Left = Me.TextBox8.Left - .Width
End With
With .Label11 'ISA Cu TB9
.Top = (Me.TextBox9.Height / 2) - (.Height / 2) + Me.TextBox9.Top
.Left = Me.TextBox9.Left - .Width
End With
With .Label12 'ISA Fe TB10
.Top = (Me.TextBox10.Height / 2) - (.Height / 2) + Me.TextBox10.Top
.Left = Me.TextBox10.Left - .Width
End With
With .Label13 'ISA S TB11
.Top = (Me.TextBox11.Height / 2) - (.Height / 2) + Me.TextBox11.Top
.Left = Me.TextBox11.Left - .Width
End With
With .Label14 'ISA SiO2 Tb12
.Top = (Me.TextBox12.Height / 2) - (.Height / 2) + Me.TextBox12.Top
.Left = Me.TextBox12.Left - .Width
End With
With .Label15 'ISA CaO TB13
.Top = (Me.TextBox13.Height / 2) - (.Height / 2) + Me.TextBox13.Top
.Left = Me.TextBox13.Left - .Width
End With
With .Label16 'ISA Al2O3 TB14
.Top = (Me.TextBox14.Height / 2) - (.Height / 2) + Me.TextBox14.Top
.Left = Me.TextBox14.Left - .Width
End With
With .Label17 'Fe3O4 TB15
.Top = (Me.TextBox15.Height / 2) - (.Height / 2) + Me.TextBox15.Top
.Left = Me.TextBox15.Left - .Width
End With
With .Label18 'Conv # CB1
.Top = (Me.ComboBox1.Height / 2) - (.Height / 2) + Me.ComboBox1.Top
.Left = Me.ComboBox1.Left - .Width
End With
With .Label19 'Charge # TB15
.Top = (Me.TextBox15.Height / 2) - (.Height / 2) + Me.TextBox15.Top
.Left = Me.TextBox15.Left - .Width
End With
With .Label20 'Skim # TB15
.Top = (Me.TextBox15.Height / 2) - (.Height / 2) + Me.TextBox15.Top
.Left = Me.TextBox15.Left - .Width
End With
With .Label21 'Skimmer Name TB15
.Top = (Me.TextBox15.Height / 2) - (.Height / 2) + Me.TextBox15.Top
.Left = Me.TextBox15.Left - .Width
End With
With .Label22 'Moisture
.Top = Me.Label5.Top
.Left = Me.TextBox3.Left - .Width
End With
End With
End Sub
Thanks