OK, if the userform is to be on-going, then I re-suggest making a button, or keyboard shortcut, to use .Show. Then at the end of the commandbutton action, use .Hide. That way the focus WILL go to the document, but you can get the userform back again easily.
OR, and here is the likely solution for you, put:
at the end of your commandbutton actions. This will shift focus to the document AND not hide the userform.
The only issue I see with this, is that the userform will, in fact, be visible (but not in focus). This means that it may block the part of the document you may want.
Here is what I do with similar situations. At the end of a commandbutton procedure, when I want to keep the userform visible, but NOT in focus, and NOT in the way:
1. I resize (shrink) the userform to have just a wee bit of the userform showing below the title bar.
2. I move the .Top and .Left properties to place the (shrunken) userform at the top of screen. I normally place it to the right of Help on the main toolbar. There is empty space there. Not on the toolbar mind you, I am simply placing its location there, where there is nothing (normally) it can block.
3. I use Application.Activate to move focus back to the document.
So now focus IS back to the document, the userform IS visible, but shrunken to just the title bar and a few pixels of the userform.
I have Userform_Click, (and Userform_DblClick) check its .Top and .Left properties. If they are the shrunken/top placement values, then its resizes back to its original size, and original location.
That way, after the commandbutton actions, the userform gets itself out of the way, focus is returned to the document, but I can get the userform back with a single click.
Oh, I normally do this with a specific "Shrink" commandbutton, but as I state, you could just as easily do it at the end of your commandbutton actions.
Gerry
My paintings and sculpture