No se usa el DESREF, sólo tienes que saber hasta dónde te llega la lista de validación.
Tu invento:
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$B$306:$B$307"
...
...
End With
Deberías cambiarlo por:
FilaFinValidacion = 307
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$B$306:$B$" & FilaFinValidación
...
...
End With
Cada vez que cambies la lista de validación deberás saber (calcular, obtener) la fila final (FilaFinValidacion) y volver a realizar la definición de la validación.
Saludos