作成日 2005/11/27
最終更新日 2005/12/4

4.今現在判明している不具合
 4-3.[Excel X for Mac]ボタンを追加し、エクセルを再起動すると、追加したボタンが消える

この問題はMicrosoftのホームページにはありませんでした。
もしかしたら、だるまの勘違いかもしれません。


 ボタンを追加するにはCommandBarControlsクラスのAddメソッドを使用します。
 このとき、Addメソッドの引数としてTemporaryというものがあるのですが、 これをFalseにすると、エクセルの再起動後も追加したボタンが残るはず、、、 なのですが、Excel X for Macではそうはなりませんでした。(※1、※2)

※1:これはVBE(Visual Basic Editor)のコマンドバーにボタンを追加するときの話であって、
Excelのコマンドバーにボタンを追加するのとは別の話です。
※2:Excel 2003(※Windows版)、Excel 97(※Windows版)では消える事はありませんでした。


1.現象
2.対象
3.回避策

1.現象

  1. 下記のプログラムを実行する。
    Module1 (標準モジュール)
    Sub addButton()
        Dim objButton As Object
        Set objButton = Application.VBE.CommandBars("標準").Controls.Add(msoControlButton, , , , False)
        objButton.Caption = "新規ボタン"
    End Sub


  2. 標準コマンドバーの一番右に、ボタンが追加されている事を確認します。(図1を参照)
  3. エクセルをいったん終了し、もう一度起動します。
  4. VBE(Visual Basic Editor)を起動すると、ボタンが消えている。(図1を参照)

    エクセルを再起動するとボタンが消える
    図1 VBEのコマンドバーに追加したボタンが消える
    上:ボタンを追加した直後の状態
    下:エクセルを再起動し、VBEを起動した状態



 そういえば、
VBEの[表示]-[ツールバー]の[デバッグ]や[編集]で表示させたコマンドバーって、エクセルを再起動すると消える。
(再度、表示されなければならない。)
これと同じ問題だと思う。
このページのトップへ

2.対象

 今のところ、判明しているのは
Microsoft Excel X for Mac のVBE
だけです。

 97,2003(いずれもWindows版)では、追加したボタンは消えないです。
 また、Microsoft Excel X for Macでも、VBEではなく、Excel側に貼付けたボタンは、
エクセルを再起動しても、消えませんでした。
このページのトップへ

3.回避策

 下記のような感じかなぁ。
  1. ボタンの追加、削除を行う処理は、ThisWorkbookのAddinInstall、AddinUninstallイベントに記 述しない。
    そのかわり、ThisWorkbookのOpen、BeforeColseイベントに記述する。
  2. アドインの読み込み後ボタンの位置をずらしても、エクセルを再起動するとボタンの位置が元に戻ることを、
    ユーザに伝えておく。(※1)

    ※1:このページで説明した事だけだとこうなる。
    しかし、実際にはボタンをずらすと別の不具合があるので(※2)、
    「ボタンの移動はしないでください」とした方がいいかも。

    ※2:ボタンを他のコマンドバーに移動すると、ボタンを押しても何もならな くなる。
    (同一コマンドバー内での移動なら大丈夫みたい。)

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.の登録商標または商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。

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