Reputation: 2213
I have a vba script that gets info from all sheets, adds them to different comboboxes and whenever a value is selected from a combobox different things happens.
The first combo I populate as following:
Private Sub Workbook_Open()
Dim oSheet As Excel.Worksheet
Dim oCmbBox As MSForms.ComboBox
Set oCmbBox = ActiveWorkbook.Sheets(1).cmbSheet
oCmbBox.Clear
For Each oSheet In ActiveWorkbook.Sheets
If oSheet.Index > 1 Then
oCmbBox.AddItem oSheet.Name
End If
Next oSheet
End Sub
The second combobox is doing the following:
Private Sub cmbSheet_Change()
Dim oSheet As Excel.Worksheet
'Report combo box
Dim oCmbBox As MSForms.ComboBox
Set oCmbBox = ActiveWorkbook.Sheets(1).cmbSheet
'Tech combo box
Dim tCmbBox As MSForms.ComboBox
Set tCmbBox = ActiveWorkbook.Sheets(1).techCombo
tCmbBox.Clear
Dim rng As Range
Set rng = Sheets(oCmbBox.Value).Range("A2:A10")
For Each cell In rng
If Not IsEmpty(cell.Value) Then
tCmbBox.AddItem cell.Value
End If
Next cell
ActiveWorkbook.Sheets(1).techCombo.ListIndex = 0
End Sub
Now, selecting a value from techCombo (ie Teknik_1) I want the third combobox to be populated with data ranging from B6 - B9.
Is that possible??
Thanks in advance!
Upvotes: 0
Views: 439
Reputation: 1149
Private Sub ComboBox21_Change()
Dim TeckCMBxIndex
TeckCMBxIndex = ActiveWorkbook.Sheets(3).ComboBox21.ListIndex
Select Case TeckCMBxIndex
Case 0
ActiveWorkbook.Sheets(3).ComboBox22.Clear
Exit Sub
Case 1
Set rng = Worksheets("SHEET3").Range("B6:B10")
Case 2
Set rng = Worksheets("SHEET3").Range("B11:B15")
End Select
ActiveWorkbook.Sheets(3).ComboBox22.Clear
For Each cell In rng
If Not IsEmpty(cell.Value) Then
ComboBox22.AddItem cell.Value
End If
Next cell
End Sub
Hope this should help you... I tried it and it worked form me. Note that i had the Values and comboboxes in sheet3.
Upvotes: 0
Reputation: 26640
Given your provided example data, something like this should work for you. Note that this code is in the Sheet1 code module:
Private Sub techCombo_Change()
Dim ws As Worksheet
Dim rFound As Range
Dim cbo3 As ComboBox
Set cbo3 = Me.ComboBox3 'Change to the actual name of the third combobox
cbo3.Clear
With Me.cmbSheet
If .ListIndex = -1 Then Exit Sub 'Nothing selectd in cmbSheet
Set ws = ActiveWorkbook.Sheets(.Text)
End With
With Me.techCombo
If .ListIndex = -1 Then Exit Sub 'Nothing selected in techCombo
Set rFound = ws.Columns("A").Find(.Text, ws.Cells(ws.Rows.Count, "A"), xlValues, xlWhole)
End With
If Not rFound Is Nothing Then
If Trim(Len(rFound.Offset(2, 1).Text)) = 0 Then
cbo3.AddItem rFound.Offset(1, 1).Value
Else
cbo3.List = ws.Range(rFound.Offset(1, 1), rFound.Offset(1, 1).End(xlDown)).Value
End If
End If
End Sub
Upvotes: 2