- ベストアンサー
マクロで特定のシート以外を繰り返し処理するには?
本を見ながらマクロを作る程の初心者です。 特定のシート以外を全て繰り返し処理するにはどうしたら良いのでしょうか? (後から付け加えるシートも含む。)
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
全部書くと長いので・・ ws.Range("C4").Value = Application.WorksheetFunction.Max(ws.Range("C6:C10000")) 後ろも「ws.Range(~~)」にしておかないと、 いつまでも「マクロを走らせた瞬間にアクティブだったシート」を見てしまいます。 「ws.」をつけることで、処理すべきシートを随時変えていきます。
その他の回答 (2)
- tsubuyuki
- ベストアンサー率45% (699/1545)
ちょっと語弊が。 各行の処理が走った瞬間にアクティブなシートを見に行く・・ が正解ですね。 すいません。
お礼
問題ないです。気になりませんでしたし・・・。 自分も日本人でありながら、日本語の使い方が難しいなと思っています。 自分は相手に伝わったらOKと思ってます。
- tsubuyuki
- ベストアンサー率45% (699/1545)
Sub Macro1() Dim ws As Worksheet For Each ws In Worksheets If ws.Name <> "対象シート名" Then ws.Range("A1") = "対象" End If Next End Sub これで"対象シート名"以外のシートのA1セルに"対象"と入力されます。
お礼
質問に答えて頂きありがとうございました。 少し変えて思っているものができないか試したのですが 全てのシートの結果が最初に実行されたシート表示内容と同じになってしまいました。どうしたら上手くいくのでしょうか? 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
お礼
すべてのCellやRangeの前にwsをつけないといけなかったのですね。ありがとうございました。