View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
NickHK NickHK is offline
external usenet poster
 
Posts: 4,391
Default Dim CTL as MSForms.Control always sets as Control/Combobox

Not 100% sure what you are after, as you mix terms: The function FillListBox
has arguments of cboBox and lboIndicator.

But something like this ?

Dim WorkingBox As MSForms.Control
Dim strboxName As String
Dim i As Integer
Dim CTL As MSForms.Control

For Each CTL In frmSettings.Controls
If (TypeOf CTL Is MSForms.ComboBox) Or (TypeOf CTL Is
MSForms.ListBox) Then
Set WorkingBox=CTL
Call FillListBox(WorkingBox, ListRows("lboIndicator"), 0)

NickHK

"Post Tenebras Lux" wrote in
message ...
In the following code, I would like to be able to dim a listbox variable,
lboBox, and
then insert the following after the first loop line:
For Each CTL In frmSettings.Controls

If TypeOf CTL Is MSForms.ListBox Then
set lboBox = CTL
Elseif Typeof CTL is MSForms.Combobox then
set cboBox = CTL
end if

I can't figure out seems always (from the very beginning) Dimmed as a
combobox control, and therefore skips the first IF Then line EVEN when the
control is a ListBox.


Any thoughts would be greatly appreciated.


My problem code:

Private Sub InitializeIndicators(frmSettings As MSForms.UserForm)
On Error GoTo InitializeIndicators_Err

Dim cboBox As MSForms.ComboBox
Dim strboxName As String
Dim i As Integer
Dim CTL As MSForms.Control

For Each CTL In frmSettings.Controls
If TypeOf CTL Is MSForms.ComboBox Then
If InStr(1, LCase(CTL.Name), LCase("lboIndicator")) Then
Set cboBox = CTL
Call FillListBox(cboBox, ListRows("lboIndicator"), 0)
ElseIf InStr(1, LCase(CTL.Name), LCase("lboPeriod")) Then
Set cboBox = CTL
Call FillListBox(cboBox, ListRows("lboPeriod"), 0)
ElseIf InStr(1, LCase(CTL.Name), LCase("lboOperator")) Then
Set cboBox = CTL
Call FillListBox(cboBox, ListRows("lboOperatorLeft"), 0)
ElseIf InStr(1, LCase(CTL.Name), LCase("lboOperator")) Then
Set cboBox = CTL
Call FillListBox(cboBox, ListRows("lboOperatorRight"), 1)
End If
End If
Next

Set cboBox = Nothing
Exit Sub