- 締切済み
Excelのマクロが実行されない
Excelを立ち上げ、VBEでThisWorkbookに以下のマクロを記述します。 Dim WithEvents a As Workbook, WithEvents b As Workbook, WithEvents c As Workbook, WithEvents d As Workbook Private Sub Workbook_Open() Stop End Sub ファイルを保存してから起動し、マクロを有効にすると Stop で停止します。 ここで一旦 Stop を削除してから再度 Stop を挿入してから保存します。 再びこのファイルを起動し、マクロを有効にしても Stop で停止しません。 今回は簡単のため Stop にしていますが、実際には起動時の処理が実行されないため困っています。 OSはWindows7,Excelは2007です。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- queuerev2
- ベストアンサー率78% (96/122)
横から失礼します。 回答No.2への補足を見て試してみました。 WindowsとExcelの組み合わせは、XPと2000、7と2013です。 その結果、質問者様とだいたい同じような結果になりました。 さらに、シートモジュールとWorkSheet型変数の組み合わせでも似たような現象が発生しました。 ということは、どうやら一般的に発生する現象のようですね。 ただ、変数宣言が何個以上でだめになるかは今ひとつはっきりしません。 で、回避方法は ・・・ まったくわかりません。
- tsubuyuki
- ベストアンサー率45% (699/1545)
おっしゃっていることの正確な意図がわからないのですが、 要するに ・開く時イベントを記録しているブックを開く ・何らかの要因でマクロが停止=デバッグモードになる ・デバッグモードのままでマクロを編集し、保存して閉じる ・再度開くが、マクロが動かない と言うことですか? もう少し、わかりやすい表現をしていただけると考えやすいです。 とりあえず、ですが。 > Dim WithEvents a As Workbook, WithEvents b As Workbook, WithEvents c As Workbook, WithEvents d As Workbook この大量のWithEventsが邪魔をしています。 これを消す、あるいは一つにするとうまくいくと思います。 何かをするためにこの宣言をしているのでしょうが、 その内容について質問文中からはわかりませんので、 必要な宣言なのか不要な宣言なのかすらわかりません。 これ以上のアドバイスは現状ではできません。
補足
回答していただきありがとうございます。 > ・何らかの要因でマクロが停止=デバッグモードになる マクロが停止する要因はStopです。それはこの場合重要ではありません。 > ・再度開くが、マクロが動かない このことが問題です。 マクロを有効にしているのになぜ動かないのでしょうか。 > この大量のWithEventsが邪魔をしています。 3個のWithEventsは大量なのでしょうか。 また、「大量のWithEventsが邪魔をしている」のであれば、大量のWithEventsがあっても動く場合があるのはなぜですか。 > これを消す、あるいは一つにするとうまくいくと思います。 減らすことはできません。実際にはもっと必要です。 現象が起きるのは3個以上の時です。 > 何かをするためにこの宣言をしているのでしょうが、 > その内容について質問文中からはわかりませんので、 > 必要な宣言なのか不要な宣言なのかすらわかりません。 おっしゃる通りですが、詳しく内容を説明するのは困難ですし、プログラム作成の方針もありますので、宣言をなくすことが可能でもなくせない場合があります。 私が知りたいのは 一般的に再現する現象なのかどうか。 なぜこのような現象が起きるのか、または、一般的な回避方法は何か(WithEventsを減らす以外に方法はないのか)。 です。
- FEX2053
- ベストアンサー率37% (7991/21371)
詳しくはもっと専門家がくると思うんですが。 STOPで止まってる状態でプログラムを直しても、それは 「元のプログラムが処理を終了してない」状態ですから (Stopで止まっただけでEndSubまで走ってない)、次の プログラムが動かなくてもある意味当然かと。 じゃあ、どうすればいいか、というと、それまでにどういう 手順で作業してたかに依存するので何とも言えませんし、 この推測があってるかどうかも保証の限りじゃないですが。
補足
回答していただきありがとうございます。 Stopの次のプログラムが動かないのが問題ではありません。 Stopで停止しないのが問題です。 実際に上記の手順を実行してみて、現象が再現できたでしょうか。
お礼
回答していただき、ありがとうございます。 現象を再現していただき、大変参考になりました。 Excelのバグと思われるので、回避策は試行錯誤してみます。 何か有用な情報がありましたら、よろしくお願いします。