Ok, I've found the problem a a partial solution...
If txtbxRows.text<=MaxRows AND txtbxRows.text>=MinRows Then
NR = txtbxRows.Text
Else
msgbox("Rows Must be between 1 and 30")
end if
This is only partial because it dos Not STOP execution.
You should check the validation of the values entered in a seperate sub like the lost focus sub, and if the values were good, then lost focus , if not keep focus, after all values were checed move focus to the run button, then in the run_click ckeck for the run button focus....
just my two cents...nahh.... my 2 euros...lol