Tengo que revisar el código. Probablemente tienes un código que va saltando de celda en celda.
Lo más conveniente es leer celda por celda pero sin seleccionar la celda. Por ejemplo:
Private Sub UserForm_Activate()
'Por.DAM
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
If Cells(i, "A") <> "" Then
ComboBox1.AddItem Cells(i, "A")
End If
Next
End Sub
Con el ciclo anterior lees las celdas y pregunta si la celda es diferente de "" (vacío) entonces que haga la carga.
Si quieres cargar valores únicos del combo.
Private Sub UserForm_Activate()
'Por.Dante Amor
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
If Cells(i, "A") <> "" Then
agregar ComboBox1, Cells(i, "A")
End If
Next
End Sub
Sub agregar(combo As ComboBox, dato As String)
'por.Dante Amor agrega los item únicos y en orden alfabético
For i = 0 To combo.ListCount - 1
Select Case StrComp(combo.List(i), dato, vbTextCompare)
Case 0: Exit Sub 'ya existe en el combo y ya no lo agrega
Case 1: combo.AddItem dato, i: Exit Sub 'Es menor, lo agrega antes del comparado
End Select
Next
combo.AddItem dato 'Es mayor lo agrega al final
End Sub
Recomendación, si seleccionas la celda, NO utilices el Do While o el Do Until, es más lento , ya que haces 3 operaciones, comparar el while, sumar uno al contador y seleccionar la siguiente celda.
Con el For Next, solamente haces una operación, ya que la estructura está en memoria.
Los ciclos Do, claro que son útiles, pero en otras circunstancias, por ejemplo, para repetir las búsquedas.
Saludos. Dante Amor