OK, sorry - that may not have been good advice about the change event. Honestly I haven't used listboxes, preferring the way a combobox displays the selection list to the user. They can be made to behave much like a list box. But that doesn't answer your question.
So to proceed with just what you first asked, how to do it in fewer steps:
You don't need a variable to hold the listbox selection at all, just pass it directly to the macro you're calling during the execution of the userform code.
The thing I said about populating the listbox values during the form initialize event still applies.
To load the form this is all you need...
Here's sample code for UserForm1, to populate the list box. Then when user clicks CommandButton1, call a macro named MonthDoer (having a string argument) passing the selected ListBox1 value directly to it.
Hope that's a little more helpful.
Private Sub UserForm_Initialize()
Private Sub CommandButton1_Click()