• ベストアンサー

マクロで特定のシート以外を繰り返し処理するには?

本を見ながらマクロを作る程の初心者です。 特定のシート以外を全て繰り返し処理するにはどうしたら良いのでしょうか? (後から付け加えるシートも含む。)

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

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.2

全部書くと長いので・・   ws.Range("C4").Value = Application.WorksheetFunction.Max(ws.Range("C6:C10000")) 後ろも「ws.Range(~~)」にしておかないと、 いつまでも「マクロを走らせた瞬間にアクティブだったシート」を見てしまいます。 「ws.」をつけることで、処理すべきシートを随時変えていきます。

kero1192kero
質問者

お礼

すべてのCellやRangeの前にwsをつけないといけなかったのですね。ありがとうございました。

その他の回答 (2)

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.3

ちょっと語弊が。 各行の処理が走った瞬間にアクティブなシートを見に行く・・ が正解ですね。 すいません。

kero1192kero
質問者

お礼

問題ないです。気になりませんでしたし・・・。 自分も日本人でありながら、日本語の使い方が難しいなと思っています。 自分は相手に伝わったらOKと思ってます。

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

Sub Macro1() Dim ws As Worksheet For Each ws In Worksheets   If ws.Name <> "対象シート名" Then     ws.Range("A1") = "対象"   End If Next End Sub これで"対象シート名"以外のシートのA1セルに"対象"と入力されます。

kero1192kero
質問者

お礼

質問に答えて頂きありがとうございました。 少し変えて思っているものができないか試したのですが 全てのシートの結果が最初に実行されたシート表示内容と同じになってしまいました。どうしたら上手くいくのでしょうか? Sub 一覧以外のシートの繰り返し処理() Dim ws As Worksheet For Each ws In Worksheets If ws.Name <> "一覧" Then ws.Range("C4").NumberFormatLocal = "G/標準" ws.Range("C4").Value = Application.WorksheetFunction.Max(Range("C6:C10000")) ws.Range("C4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole ws.Range("C4").NumberFormatLocal = "yyyy/m/d;@" ws.Range("D4").NumberFormatLocal = "G/標準" ws.Range("D4").Value = Application.WorksheetFunction.Max(Range("D6:D10000")) ws.Range("D4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole ws.Range("D4").NumberFormatLocal = "yyyy/m/d;@" ws.Range("E4").NumberFormatLocal = "G/標準" ws.Range("E4").Value = Application.WorksheetFunction.Max(Range("E6:E10000")) ws.Range("E4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole ws.Range("E4").NumberFormatLocal = "yyyy/m/d;@" ws.Range("F4").NumberFormatLocal = "G/標準" ws.Range("F4").Value = Application.WorksheetFunction.Max(Range("F6:F10000")) ws.Range("F4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole ws.Range("F4").NumberFormatLocal = "yyyy/m/d;@" ws.Range("G4").NumberFormatLocal = "G/標準" ws.Range("G4").Value = Application.WorksheetFunction.Max(Range("G6:G10000")) ws.Range("G4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole ws.Range("G4").NumberFormatLocal = "yyyy/m/d;@" ws.Range("H4").NumberFormatLocal = "G/標準" ws.Range("H4").Value = Application.WorksheetFunction.Max(Range("H6:H10000")) ws.Range("H4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole ws.Range("H4").NumberFormatLocal = "yyyy/m/d;@" End If Next End Sub

関連するQ&A