■ ボタンからの起動であるかチェックする
ワークシート上に標準で配置できるボタンには、従来からのフォームコントロールのものと 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 の値を調べれば、どのボタンが押されたかを特定することができます