Can't be completely sure of what's up, as your sheet doesn't actually work (an unavailable referenced sheet).
The basic situation seems to be that you have carefully used the OnLoad variable to make sure that you only fill the list box once, the first time it is evaluated. That is what prevents it from responding to changes to its input data -- you coded it to do that.
Don't use the Recalculate method in the Exec routine. The purpose of the Recalculate method is to cause a reevaluation of the list box, and so execute the Exec routine. Since you are already executing the Exec routine you don't want to do that. Fortunately in this context it seems to be ignored, logically such a usage represents an endless loop.
__________________
� � � � Tom Gutman