Page 635 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼複数のシートの操作 お願いします 03/1/29(水) 11:10 ┣Re:複数のシートの操作 BOTTA 03/1/29(水) 12:23 ┗Re:複数のシートの操作 ポンタ 03/1/29(水) 12:28 ┣Re:複数のシートの操作 お願いします 03/1/29(水) 12:59 ┗出来たんですが....(T_T) お願いします 03/1/29(水) 13:57 ┗Re:出来たんですが....(T_T) ポンタ 03/1/29(水) 14:02 ┗ありがとうございました お願いします 03/1/29(水) 14:17 ─────────────────────────────────────── ■題名 : 複数のシートの操作 ■名前 : お願いします ■日付 : 03/1/29(水) 11:10 -------------------------------------------------------------------------
初めて投稿します。 いままで単一のシートで Sub () Range("k2:k3").UnMerge Range("n2:n3").Copy Range("k2").PasteSpecial Paste:=xlValues Range("k2:k3").Merge Range("a3:h40").Select Selection.ClearContents UserForm1.Show End Sub というマクロを使っていたんですが、これを同じブックの複数のシートで 同時操作したいのですがどうすればいいですか なにぶん初心者なのでよろしくお願いします |
お願いしますさん、こんにちは。 With Worksheets("Sheet1") .Range("k2:k3").UnMerge .Range("n2:n3").Copy .Range("k2").PasteSpecial Paste:=xlValues .Range("k2:k3").Merge .Range("a3:h40").ClearContents End With UserForm1.Show Withでシートを指定すればOKです。 ただし、SelectはシートをActiveにしないとダメなので クリアするだけにしました。 |
シート名が"Sheet1"と"Sheet2"のときだけ処理をする というコードです。 シート名が〜のときだけは処理をしない という場合には、違う書き方をしたほうが効率がいいです。 それと、以下の4行は >Range("k2:k3").UnMerge >Range("n2:n3").Copy >Range("k2").PasteSpecial Paste:=xlValues >Range("k2:k3").Merge は .Range("k2").Value = .Range("n2").Value と書き換えても同じ結果になると思います。 お試しください。 Sub test() Dim Ws As Worksheet For Each Ws In Worksheets Select Case Ws.Name Case "Sheet1", "Sheet2" With Ws .Range("k2").Value = .Range("n2").Value .Range("a3:h40").ClearContents End With End Select Next UserForm1.Show End Sub |
▼ポンタ さん: >シート名が"Sheet1"と"Sheet2"のときだけ処理をする >というコードです。 > >シート名が〜のときだけは処理をしない >という場合には、違う書き方をしたほうが効率がいいです。 > >それと、以下の4行は > >>Range("k2:k3").UnMerge >>Range("n2:n3").Copy >>Range("k2").PasteSpecial Paste:=xlValues >>Range("k2:k3").Merge > >は > >.Range("k2").Value = .Range("n2").Value > >と書き換えても同じ結果になると思います。 > >お試しください。 > >Sub test() > Dim Ws As Worksheet > For Each Ws In Worksheets > Select Case Ws.Name > Case "Sheet1", "Sheet2" > With Ws > .Range("k2").Value = .Range("n2").Value > .Range("a3:h40").ClearContents > End With > End Select > Next > UserForm1.Show >End Sub ボンタさん有り難うございます さっそく試してみます |
▼ポンタ さんありがとうございました 複数のシートの操作はできましたが新たに問題が発生しました 先程のUSERFORMの続きですが Private Sub CommandButton1_Click() Range("H44") = UserForm1.TextBox1.Value Unload Me Range("A1").Select End Sub となっています この処理を同時に複数のシート行いたいのですがどうすればいいのでしょうか もしよければ教えてください お忙しいところ本当にお手数欠けます |
こんな感じでしょうか? 直に書き直したので、タイプミスしてるかも知れません。 もし、エラーが出たら、書き直してください。 Private Sub CommandButton1_Click() Dim Ws As Worksheet For Each Ws In Worksheets Select Case Ws.Name Case "Sheet1", "Sheet2" With Ws .Range("H44") = UserForm1.TextBox1.Value '全ての対象シートで"A1"をアクティブにする必要があるなら次の2行が必要 .Activate .Range("A1").Select End With End Select Next Unload Me 'アクティブシートのみA1をアクティブにするなら、 Range("A1").Select End Sub |
▼ポンタ さん: 全て完璧にできました。 わがままな質問に すばやい対応本当にありがとうございました |