Guillermoには、日常的に実行する一連のマクロがあり、それぞれを手動で実行すると、正常に機能します。彼はすべてのマクロを「RunAll」マクロに配置しようとしましたが(したがって、6つの個別のマクロではなく1つのマクロを実行するだけで済みます)、そのうちの1つが正しく実行されません。 RunAllマクロを実行すると、セルが保護されて読み取り専用であるというエラーが表示されます。ただし、シートには保護がなく、マクロを個別に実行してもエラーは発生しません。

言うまでもなく、個別に正常に実行されるが、他のマクロと連携して実行されないマクロは、正しく機能しない原因となっている何かに遭遇しています。これは、マクロを個別に実行した場合とは異なる状態でブックを離れる前に実行されているマクロを意味している可能性があります。

たとえば、誤動作しているマクロがシリーズの3番目に実行される場合は、最初の2つのマクロをチェックして、それらが何をしているかを確認します。選択したセルを変更しますか?アクティブなワークシートを変更しますか? 3番目のマクロが期待する条件を変更しますか?これらのいずれかにより、3番目のマクロが正しく機能しなくなる可能性があります。

最も可能性の高いシナリオは、アクティブなワークシートに関する2番目の提案です。マクロを個別に実行する場合、特定のワークシートをアクティブにして実行する可能性が高くなります。ただし、他のマクロはアクティブなワークシートを別のワークシートに変更する場合があり、その別のワークシートが保護が適用されているワークシートである場合があります。

解決策は、各マクロをチェックして、場所情報(ワークシート、アクティブセル、選択したセルなど)が保存されていることを確認することです

それらのいずれかに変更を加える前に。それらを保存すると、マクロの最後でそれらを復元するのは簡単です。

それでも問題が解決しない場合は、デバッグを行う必要があります。 「RunAll」マクロで、VBAエディターを使用して、失敗したマクロを呼び出す行にブレークポイントを確立します。その後、「ステップイン」を使用できます

マクロにステップインし、障害が発生した場所を調べるコマンド。マクロが変更しようとしているワークシートとセルに特に注意を払い、そのワークシートとセルにつながる以前のマクロで何が起こっているのかを理解できるかどうかを確認します。イミディエイトウィンドウの次の行のいずれかを使用して、現在地を確認できます。

? ActiveSheet.Name ? ActiveCell.Address

これらのタイプのエラーを追跡することは困難な場合がありますが、トンネルの終わりにある光は、完全に機能する「RunAll」マクロになり、時間を大幅に節約できることです。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(12710)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。