Hola,
Pues el código que ha compartido (en mi opinión) se ve bien en su estructura, tal vez el problema de que se borre el ítem se deba a la forma en que se está limpiando el ComboBox.
Por qué no guarda el ítem seleccionando una variable selectedItem. Así después de limpiar y volver a llenar el ComboBox, restaura el ítem seleccionado.
Algo así:
Private Sub Combobox1_DropButtonClick()
Dim sd As New Collection
Dim celda As Range
Dim dato
Dim r As Range
Dim UF As Integer
Dim selectedItem As String
On Error Resume Next
Worksheets("CONSOLIDADO").Activate
Range("S2").Select
' Guarda el ítem seleccionado
selectedItem = Combobox1.Value
' Limpia el ComboBox
Combobox1.Clear
With Worksheets("BASE")
UF = .Range("S" & Rows.Count).End(xlUp).Row
Set r = .Range("S2:S" & UF)
For Each celda In r
sd.Add celda.Value, CStr(celda.Value)
Next celda
For Each dato In sd
Combobox1.AddItem dato
Next dato
End With
' Restaura el ítem seleccionado
Combobox1.Value = selectedItem
End Sub
Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.