I created a UserForm and the following macro opens it:

Sub DoMetrics()
frmMetrics.Show
End Sub

This macro is placed in a module created in the Workbook. I placed a button on a worksheet (Sheet4) and assigned the above macro for that button.
The UserForm opens when the button is actuated.

I moved (cut and paste) the button to another worksheet (Sheet2) in the same workbook and reassigned the button to the same macro.
When I actuate the button now, I get the following runtime error 1004:

"Method of 'Range' of object '_Worksheet' failed."

When I move (cut and paste) this button to the previous worksheet (Sheet4), it works again. There seems to be a reference to a Worksheet, but I am not able to understand it.

As I understand, we have a module common to all worksheets and the macro should be available to the button from whichever worksheet it is placed.
I'll appreciate if anyone explains to me what the problem is.