Why not to use the button to prompt for the macro and only allow the code associated with the button to run if the password is entered?
Code:
Private Sub CommandButton12_Click()
Const sPassword As String = "password"
Dim sAnswer As String
sAnswer = InputBox("Enter Password")
If Not sAnswer = (sPassword) Then
MsgBox "This function is not available without the correct password."
GoTo lbl_Exit
End If
'Do stuff e.g
MsgBox "Button code runs"
lbl_Exit:
Exit Sub
End Sub