ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Selectively Populate Excel VBA Combo Box (https://www.excelbanter.com/excel-programming/360620-selectively-populate-excel-vba-combo-box.html)

ll

Selectively Populate Excel VBA Combo Box
 
Hi,
I currently have a combo box which is populated by data from an Excel
spreadsheet. I wish to have the combo box only be populated with data
which is not on another spreadsheet (within the same workbook).
For instance, List1 on Sheet1 populates the combo box - And then List 2
on Sheet2 contains entries made by my Excel form, drawn from the data
listing on Sheet1. I wish to avoid duplicate entries in part by
removing the already-entered data from the combo box.

Thanks for any help you can provide. :)
Louis

code below
======

'////Background code for combo box population
'////No Editing
Private Function UniqueItemList(InputRange As Range, _
HorizontalList As Boolean) As Variant
Dim cl As Range, cUnique As New Collection, i As Long, uList() As
Variant
Application.Volatile
On Error Resume Next

For Each cl In InputRange
If cl.Formula < "" Then
cUnique.Add cl.Value, CStr(cl.Value)
End If
Next cl
UniqueItemList = ""
If cUnique.Count 0 Then
ReDim uList(1 To cUnique.Count)
For i = 1 To cUnique.Count
uList(i) = cUnique(i)
Next i
UniqueItemList = uList
If Not HorizontalList Then
UniqueItemList = _
Application.WorksheetFunction.Transpose(UniqueItem List)
End If
End If

On Error GoTo 0
End Function

Private Sub cboCourse_Change()
'////Contains editable settings
'////////////
'Check if ListIndex = 0 (first option in combo box)
With Me.cboCourse2
'.Clear
If Me.cboCourse.ListIndex = 0 Then
Label4.Visible = False
Me.cboCourse2.Visible = False
..Clear ' Clear the list box content
End If
End With
'////////////

'////////////
'Check if ListIndex = 1 or "all" (second option in combo box)
With Me.cboCourse2
If Me.cboCourse.ListIndex = 1 Then
Me.Label4.Visible = True
Me.cboCourse2.Visible = True
..Clear ' Clear the list box content

'////Edit range below
'the variable below is to populate the combo box
MyUniqueList2 = UniqueItemList(Sheet1.Range("A1:A385"), True)
'loop below for combo box
For i = 1 To UBound(MyUniqueList2)
..AddItem MyUniqueList2(i)
Next i

'loop below for accurate row count
Me.cboCourse2.ListIndex = 0 'select the first item

End If
End With
'////////////

'////////////
'Check if ListIndex = 2 or "A-M Books" (third option in combo box)
With Me.cboCourse2
'.Clear
If Me.cboCourse.ListIndex = 2 Then
Me.Label4.Visible = True
Me.cboCourse2.Visible = True
..Clear ' Clear the list box content

'////Edit range below
'the variable below is to populate the combo box
MyUniqueList3 = UniqueItemList(Sheet2.Range("B1:B10"), True)

'loop below for combo box
For i = 1 To UBound(MyUniqueList3)
..AddItem MyUniqueList3(i)
Next i
'i = 0

'loop below for accurate row count

Me.cboCourse2.ListIndex = 0 'select the first item

End If
End With
'////////////

'////////////
'Check if ListIndex = 3 or "N-Z Books" (third option in combo box)
With Me.cboCourse2
'.Clear
If Me.cboCourse.ListIndex = 3 Then
Me.Label4.Visible = True
Me.cboCourse2.Visible = True
..Clear ' Clear the list box content

'////Edit range below
'the variable below is to populate the combo box
MyUniqueList4 = UniqueItemList(Sheet2.Range("B11:B80"), True)

'loop below for combo box
For i = 1 To UBound(MyUniqueList4)
..AddItem MyUniqueList4(i)
Next i
'i = 0

'loop below for accurate row count

Me.cboCourse2.ListIndex = 0 'select the first item

End If
End With
'////////////


End Sub


ll

Selectively Populate Excel VBA Combo Box
 
Would there be a certain point in the code to run a compare statement?
Thanks



All times are GMT +1. The time now is 12:29 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com