Excel VBAに効く Vitamin E
シート上のコントロールのオブジェクト名は変えるな[97]
Excel97でシート上に貼り付けたコマンドボタン等のオブジェクト名を変更した場合、そのシートをコピーしてもオブジェクト名は移行されません。(02/01/11MS確認)
プログラムの可読性を高めるために、次のようにオブジェクト名を変更する場合があります。
  CommandButton1 → cmdStart
このSheetをコピーしますとコピー先のコマンドボタンのオブジェクト名は  CommandButton1
に変わってしまいます。当然このコマンドボタンをクリックしてもマクロは実行されません。 Sub cmdStart_click() は(General)セクションに移動しています。
ちなみにUserFormをコピーしてもこのような現象は発生しません。
MSではこの現象を認めた上で、シートのコマンドとUserFormのコマンドはぜんぜん別物なのでこれはExcelの仕様ですとのことでした。でも次のことを考慮すればバグといわれてもしかたないのでは?
  1.RangeとかShape オブジェクトにつけた名前は問題なく移行される。
    (RangeとかShape オブジェクトの名前はオブジェクト名でないと逃げるでしょうが・・・)
  2.Excel 2000ではこの現象が発生しない。
    (やっぱり直したんだ)
おまけ情報: Excelをコンパイルすると実行速度が上がるか
MSではほとんど変わらないといっています。でも文法チェックの意味しかないのかというとそうでもなく、できるだけコンパイル済みの状態で実行して欲しいとのことでした。(02/01/09MS確認)
CmdOnSheet.xlsのダウンロード(CmdOnSheet.LZH)

(UPD:02/01/12)