If you want to automate it further, a worksheet event could look for value changes in columns A or B. You should consider what impacts that would have on current selection list values already set though.
Here is a first blush effort. There are other ways like autofilter or advanced filter.
Sub FillxCBs()
Dim s As Shape, a, e, r As Range, c As Range
On Error Resume Next
With ActiveSheet
If .Shapes.Count = 0 Then Exit Sub
Set r = .Range("A2", .Cells(.Rows.Count, "A").End(xlUp))
a = UniqueArrayByDict(r.Value)
For Each e In a
Set s = .Shapes(e)
If s Is Nothing Then GoTo NextE
If s.Type <> 12 Then GoTo NextE
.OLEObjects(e).Object.Clear
For Each c In r
If s.Name = c.Value2 Then
.OLEObjects(e).Object.AddItem c.Offset(, 1).Value, -1
End If
Next c
NextE:
Next e
End With
End Sub
' http://www.excelforum.com/excel-programming-vba-macros/819998-filter-and-sort-scripting-dictionary.html
'Early Binding method requires Reference: MicroSoft Scripting Runtime, scrrun.dll
Function UniqueArrayByDict(Array1d As Variant, Optional compareMethod As Integer = 0) As Variant
Dim dic As Object 'Late Binding method - Requires no Reference
Set dic = CreateObject("Scripting.Dictionary") 'Late or Early Binding method
'Dim dic As Dictionary 'Early Binding method
'Set dic = New Dictionary 'Early Binding Method
Dim e As Variant
dic.CompareMode = compareMethod
'BinaryCompare=0
'TextCompare=1
'DatabaseCompare=2
For Each e In Array1d
If Not dic.Exists(e) Then dic.Add e, Nothing
Next e
UniqueArrayByDict = dic.Keys
End Function