ActiveSheetの弊害
ActiveSheetが多用されたマクロは、マクロ内で他ブックを読んで処理をしている時に、並行して手作業で別のExcelブックを開けて操作すると、予想外のシートがアクティブになっているので、処理できず異常終了することがあります。
なので、"ActiveSheet"の使用は避けることが賢明です。
VBAは書籍がたくさんあり、入門の間口が広い分、甘いソースが現場にまぎれこみます。
“ActiveSheet"が使われるのは、入門書の多くに、ActiveSheetを使った例が記載されているのが要因ではないかと思われます。
たしかに分かりやすいんですけど、厳密な処理の場合は不向きです。
【代案】
Set sh = Worksheets.Add(Before:=Worksheets(1))
などとすれば、追加したシートをオブジェクト変数に代入するので、"ActiveSheet"を使わなくてすみます。
使用が避けられない場合は、"ThisWorkbook.ActiveSheet"と所属するブックを限定してやると、他ブックを対象とした操作をすることは回避できます。
ディスカッション
コメント一覧
まだ、コメントがありません