■ ボタンからの起動であるかチェックする
ワークシート上に標準で配置できるボタンには、従来からのフォームコントロールのものと ActiveX コントロールのものがあります
Excel の負担を軽くしたり、マクロでリアルタイムに作成したボタンにマクロまで 割り当てできることを考えるとフォームコントロールのボタンで統一した方がよいと思います
ActiveX コントロールのものも割り当てられるかもしれませんが方法が分かりません

フォームコントロールのボタンには、ボタンを押下してマクロが実行し終わった直後に F4 キーを押下すると、ボタン押下の処理を再実行してしまうという注意点があります
これを回避するために Application.Caller の値を調べます
F4 キーでマクロが実行されていれば、値が取得できずにエラーが発生します
Private Function CheckButton() As Boolean

    Dim st_buff As String               '' バッファ

    On Error Resume Next
    st_buff = Application.Caller
    CheckButton = (Err.Number = 0)
    On Error GoTo 0

End Function
複数のボタンから同じマクロを起動する場合 Application.Caller の値を調べれば、どのボタンが押されたかを特定することができます