This worked ok for me:
Option Explicit
Private Sub ComboBox1_Change()
Dim myCell As Range
If Me.ComboBox1.ListIndex < 0 Then
Exit Sub
Else
Me.ComboBox2.Clear
With Worksheets("sheet1")
For Each myCell In .Range("A1", _
.Cells(.Rows.Count, "A").End(xlUp)).Cells
If myCell.Value = Me.ComboBox1.Value Then
With Me.ComboBox2
.AddItem myCell.Offset(0, 1).Value
.List(.ListCount - 1, 1) = myCell.Offset(0, 2).Value
End With
End If
Next myCell
End With
End If
End Sub
Private Sub ComboBox2_Change()
'just to show how to retrieve those values
With Me.ComboBox2
If .ListIndex < 0 Then
Exit Sub
End If
MsgBox .List(.ListIndex, 0) & "--" & .List(.ListIndex, 1)
End With
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
Dim myCell As Range
Dim myCollection As Collection
Dim iCtr As Long
Me.ComboBox1.Clear
With Me.ComboBox2
.Clear
.ColumnCount = 2
.ColumnWidths = "0;15"
End With
Set myCollection = New Collection
On Error Resume Next
With Worksheets("sheet1")
For Each myCell In .Range("A1", _
.Cells(.Rows.Count, "A").End(xlUp)).Cells
myCollection.Add myCell.Value, CStr(myCell.Value)
Next myCell
End With
On Error GoTo 0
For iCtr = 1 To myCollection.Count
Me.ComboBox1.AddItem myCollection.Item(iCtr)
Next iCtr
End Sub