• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数のシートで各シートをアクティブについて)

複数のシートをアクティブにしてコードを実行する方法は?

このQ&Aのポイント
  • 複数のシートで各シートをアクティブにして次のようなコードを実行するとシートが次々と代わって表示されます。シートを1に固定しながら出来る方法はありませんか
  • シートを切り替えながら特定のコードを実行する方法について知りたいです。複数のシートで各シートをアクティブにしてコードを実行するとエラーが発生します。
  • シートをアクティブに切り替えながらコードを実行する方法を教えてください。現在、複数のシートで各シートをアクティブにしてコードを実行しているのですが、エラーが出てしまいます。

質問者が選んだベストアンサー

  • ベストアンサー
  • Randomize
  • ベストアンサー率70% (38/54)
回答No.2

単純に Worksheets(SN).Activate これを外すだけで実装可能ですが、saab8743さんが見事に罠に引っかかっている為にエラーが発生しています。 直す為には、 Sheets(SN).Cells(gyou, 24).Value = Application.WorksheetFunction.Average(Sheets(SN).Range(Sheets(SN).Cells(gyou - (ma1 - 1), 22), Sheets(SN).Cells(gyou, 22))) にしなければいけません。 どこが変わったか分かりにくいでしょうが、・・・Range(Cells(gyou・・・の部分のCellsに所属シート名Sheets(SN).を記述し忘れていることが原因です。 所属シート名が省略されている場合はアクティブになっているシートが暗示的に選択されてしまいます。ですので、Rangeの所属シートとCellsの所属シートが食い違ってエラーが起こってしまうわけです。 今後このようなエラーを軽減する為に、Withの使用でソースの可読性を向上することをお勧めします。 With Sheets(SN) .Cells(gyou, 24).Value = Application.WorksheetFunction.Average(.Range(.Cells(gyou - (ma1 - 1), 22), .Cells(gyou, 22))) End With と言う風に記述します。ピリオドが見にくいでしょうが、見落としに気をつけてくださいね。

saab8743
質問者

お礼

あそうですね! 全く気が付きませんでした。大変勉強になりました。また詳しく解説いただいてとても分かりやすかったです ありがとうございました。 WITHもこれから使わせてもらいます。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

半分出来てたのに,まだ間違いがあります。 間違い: シート.range(cells( ,),…) 正解: シート.range(シート.cells( , ), シート.cells( ,)) 作成例: with worksheets(SN)  .Cells(gyou, 24).Value = Application.WorksheetFunction.Average(   .Range(.Cells(gyou - (ma1 - 1), 22), .Cells(gyou, 22))) end with

saab8743
質問者

お礼

ありがとうございます 勉強になりました

関連するQ&A