Hola juan007
para dejar el rango volatil lo que yo hice fue usar un variable temporal de la siguiente forma:
Application.ScreenUpdating = False
'declaras la variable
Dim c
'Seleccionas la hoja donde estan los datos(por ejemplo la hoja4)
Hoja4.Select
'te posicionas en la primera celda
Range("h1").Select
'donde cuenta las que no esten vacias y las asigna a la variable
Do While ActiveCell <> Empty
ActiveCell.Offset(1, 0).Select
c = c + 1
Loop
'si no hay registros la lista queda en blanco
If Range("h2") = "" Then
lstBancos.RowSource = ""
Else
'de lo contrario agrega a la propiedad RowSource el rango
lstBancos.RowSource = ("h2:j" & c)
End If
Application.ScreenUpdating = True
Solo tendrias que adaptarlo a lo que tu quieres .
Espero te sea de ayuda