作成日 2005/11/20
最終更新日 2005/11/20

4.今現在判明している不具合
 4-2.Addinを強制終了すると、何も動作しないボタンが残る

 先に断っておくと、これは仕方ない。

1.現象
2.原因
3.回避策

1.現象

 とりあえず、[ヘッダコメントの挿入]アドインを例にあげ て説明します。
 アドインを起動したあと、プロジェクトエクスプローラから、
[IHC]プロジェクトを選択し、リセットします。(図1)
IHCプロジェクトをリセットする。
図1 [IHC]プロジェクトをリセットする。

 すると、「ヘッダコメントの挿入」ボタンが効かなくなります。(図2)
ヘッダコメントの挿入ボタンが効かなくなる。
図2
 

 
 ここでは、リセットするとボタンが効かなくなると説明しましたが、
他にも下記のことを実行する事によっても同様の現象が起こります。
  1. Endステートメントの実行
  2. 実行時エラーが発生し、アドインを終了した場合

このページのトップへ

2.原因

 普通は、CommandBarEventsクラスのイベントを実装したクラスのオブジェクトが破棄されると、
ボタンも削除するようにすると思います。
(classモジュールのTerminateイベントでボタンを削除する。)

 しかし、マクロやアドインを強制終了した場合、classモジュール内のTerminateイベントは発生せず(※1)、
オブジェクトが破棄されるので、ボタンだけが残ってしまいます。

※1:VBAのヘルプの「Endステートメント」の解説も読んでください。
このページのトップへ

3.回避策

 Addinを強制終了したときに、ボタンを消す方法は無いと思います。

 しかし、何も動作しないボタンが残った後、それを動くようにするマクロは組むべきだと思います。

 [ヘッダコメントの挿入]アドインの場合、
アドインを強制終了すると[ヘッダコメントの挿入]ボタンを押しても何も動作しなくなりますが、
この状態で「addIHCButton」を実行すると、
[ヘッダコメントの挿入]ボタンの押下により処理が走るようになります。(※1)

※1:実装方法ですが、そんなに難しくないです。
●ボタンを追加する際にはボタンのTagプロパティにボタンの名前(※2)を入れるようにします。
●ボタンを追加する前に、追加するコマンドバーのすべてのボタンのTagプロパティを調べ、
これから追加しようとするボタンのTagプロパティ値と等しいものがあれば、そのボタンは削除します。
そのあと、ボタンを追加します。

※2:[ヘッダコメントの挿入]アドインの場合、
"IHC"とすると他のプログラマが作成したボタンのTagプロパティ値が被ってしまう可能性があると
思ったので、このHPのURLを逆にした文字列も一緒に入れてあります。

Prev Up Next  Top
このページのトップへ

このページの利用によって発生した、いかなる損害について、このホームページの作成者は責任を負いません。
このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方はメールをお願いします。

Microsoft 、Windows 、Visual Basic 、Microsoft Office および Excel は米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
ここではExcel® をエクセル、Visual Basic® for Applications をVBAと表記する場合があります。
Mac 、Mac OS 、Mac OS X は米国Apple Computer,Inc.の登録商標または商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。

このホームページの作成者はこれらの会社とはいっさい関係がありません。