MW211 EXIT

devlog
ExcelVBA/リスト作成でエラー
2014年09月12日
以下のような感じで入力規則によるリストを作成したところ…。
┌──────────────────────────────────────┐
│With ActiveCell.Validation                                                  │
│    .Delete                                                                 │
│    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertInformation, _       │
│        Formula1:="1:東京,2:大阪,3:名古屋"                                  │
│    .InCellDropdown = True                                                  │
│    .IgnoreBlank = True                                                     │
│End With                                                                    │
└──────────────────────────────────────┘
Excel2003で以下のようなエラーが出てしまった(Excel2010では出なかった)。
┌──────────────────────────────────────┐
│実行時エラー'-2147417848(80010108)':                                        │
│オートメーションエラーです。                                                │
│起動されたオブジェクトはクライアントから切断されました。                    │
└──────────────────────────────────────┘

「更新」ボタンを押して実行した場合にエラーが発生し、
マクロを関数単位で直接実行する分には問題なかった。

ということで、原因はフォーカス。
ボタンを押した時点でフォーカスがボタンに当ってしまうので
エラーでごねられてしまうということらしい。

解決策は、ボタンが押された後で、シートに故意にフォーカスをあて直す。
┌──────────────────────────────────────┐
│Cells(1, 1).Select                                                          │
└──────────────────────────────────────┘

もしくはボタンにフォースを当てなくする(TakeFocusOnClick=False)。
分類:ExcelVBA