マクロの書き変え方法とシート数指定について

このQ&Aのポイント
  • マクロの書き変え方法とシート数指定について質問です。
  • 現在使用しているマクロに、セルE12・E14・F14のデータを消す式を追加したいです。
  • また、シート数を指定しない場合の方法も教えていただけませんか?
回答を見る
  • ベストアンサー

マクロを書き変えたいのですが、

マクロを書き変えたいのですが、 現在使用してる 下記のマクロがあるのですが、 このマクロに Sheet1~Sheet18までの セル E12・E14・F14データーを消す式を足したいのですが、 どのように書いたらよいでしょうか? Sub 打ち出しデーター削除() ' ' 打ち出しデーター削除 Macro ' 打ち出しシートの時間・判定を クリアーにする。 ' ' Sheets("打 ち 込  用 ").Select Application.ScreenUpdating = False Selection.SpecialCells(xlCellTypeConstants, 1).Select Selection.ClearContents Sheets("★スタッフ一覧").Select Range("A1").Select End Sub あと シート数を指定しない場合も知りたいのです。 どなたか 力を貸してください。

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

  • ベストアンサー
  • mar00
  • ベストアンサー率36% (158/430)
回答No.5

何度もすいません。 Sheets(i).Range("B2,E12,E14,F14").ClearContents E12,ではなく、B12を消してください。

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

シート名がA,B、Cの3つのシートの「E12・E14・F14データーを消す」 Sub test02() sn = Array("A", "B", "C") For i = 0 To UBound(sn) Worksheets(sn(i)).Range("E12,E14,F14").ClearContents Next i End Sub とか ーーー Sub test03() Dim sn Set sn = Sheets(Array("A", "B", "C")) For Each ws In sn ws.Range("E12,E14,F14").ClearContents Next End Sub などで出来るようだ。 質問振りからして、これらを使うには、勉強がいると思う。 エクセルの「作業グループ」という機能を、まず知ってないとならない。 Googleででも照会のこと。 シートはインデックス番号でも指定できるが、シートタブの場所を動かすとインデックスが変わるので、名前を見据えて考える。

  • mar00
  • ベストアンサー率36% (158/430)
回答No.4

訂正です。 Sheets(i).Range("B2,E12,E14,F14").ClearContents E12,は消してください。

  • mar00
  • ベストアンサー率36% (158/430)
回答No.3

Sub Macro1() ここはいらないです。 For i = 1 To 18 Sheets(i).Range("B2,E12,E14,F14").ClearContents Next i End Sub ここもいらないです。

  • mar00
  • ベストアンサー率36% (158/430)
回答No.2

Selection.ClearContents この間にマクロをいれます。 Sheets("★スタッフ一覧").Select 注:For 1 to 18 はsheet1が先頭にあってsheet18まで連続している事を 前提としています。 もし、Sheets("打 ち 込  用 ")用が先頭にあって、2番目以降にsheet1~sheet18が あるような場合は For 2 to 19 にして下さい。 

07535373
質問者

補足

御手数おかけします。 うまくゆかないのですが、 こちらでOKでしょうか Sub 打ち出しデーター削除() ' ' 打ち出しデーター削除 Macro ' 打ち出しシートの時間・判定を クリアーにする。 ' ' Sheets("打 ち 込  用 ").Select Application.ScreenUpdating = False Selection.SpecialCells(xlCellTypeConstants, 1).Select Selection.ClearContents Sub Macro1() For i = 1 To 18 Sheets(i).Range("B2,E12,E14,F14").ClearContents Next i End Sub Sheets("★スタッフ一覧").Select Range("A1").Select End Sub

  • mar00
  • ベストアンサー率36% (158/430)
回答No.1

Sub Macro1() For i = 1 To 18 Sheets(i).Range("B2,E12,E14,F14").ClearContents Next i End Sub '一番最後のシートまでなら18をSheets.countに '最後から2番目ならSheets.count-1というふうにもできます。

07535373
質問者

補足

回答ありがとうございます。 遅くなりましてスミマセン 教えていただいたマクロを具体的にどのように足せばよろしいでしょうか? 現在シート名 打ちこみ用と言うシートの任意のセルを消すまくろがありますが、 これにシート1~18のセルE12・E14・F14・のデーターを消すマクロを 追加したいのですが、 ご協力よろしくおねがいします。

関連するQ&A

  • セル変更2回目以降マクロが走らない

    office2010 セル値変更でマクロ実行の件で質問です。 macroというシートのA11セルがプルダウンリストになっていて、その値を変更したらマクロ実行という構成を作成しました。 下記はmacroというシートに記載したマクロ Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$11" Then Exit Sub Calculate Macro4 End Sub 下記は標準モジュールに記載したマクロ Sub Macro4() ' 'macroシートB11に表示されるNo.で抽出 Application.EnableEvents = False Application.Calculation = xlCalculationManual Application.ScreenUpdating = False Sheets("Sheet1").Visible = True Sheets("Sheet2").Visible = True Sheets("Sheet3").Visible = True Sheets("Sheet4").Visible = True Sheets("work").Visible = True Sheets("Sheet3").Select Cells.Select Selection.ClearContents Selection.ClearContents Sheets("Sheet2").Select Cells.Select Selection.ClearContents Selection.ClearContents Sheets("Sheet1").Select Cells.Select Selection.AutoFilter Selection.AutoFilter ActiveSheet.Range("$A:$BA").AutoFilter Field:=3, Criteria1:=Sheets("macro").Range("B11") Sheets("kisyu_work").Select Cells.Select Selection.ClearContents Sheets("Sheet1").Select Columns("F:F").Select Selection.SpecialCells(xlCellTypeVisible).Select Application.CutCopyMode = False Selection.Copy ActiveWindow.ScrollWorkbookTabs Position:=xlLast Sheets("kisyu_work").Select Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False Sheets.Add ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "kisyu_work!R1C1:R1048576C1", Version:=xlPivotTableVersion14). _ CreatePivotTable TableDestination:="", TableName:= _ "ActiveSheet.Name", DefaultVersion:=xlPivotTableVersion14 Cells(1, 1).Select With ActiveSheet.PivotTables("ActiveSheet.Name").PivotFields("V_KISYU_CD") .Orientation = xlRowField .Position = 1 End With Range("A3:A" & Range("A" & Rows.Count).End(xlUp).Row - 2).Select ' Selection.Copy ActiveWindow.ScrollWorkbookTabs Position:=xlLast Sheets("kisyu_work").Select Range("B1").Select ActiveSheet.Paste ' Range("C1:C" & Range("B" & Rows.Count).End(xlUp).Row).Value = "=INDEX(M_KISYU!C[5],MATCH(RC[-1],M_KISYU!C,0))" Sheets("macro").Select End Sub A11セルの値を変更するとMacro4は実行されます。 しかしながら、2回以上続けてA11の値を変更するとMacro4が動作しません。 なぜなのでしょうか? なお、プルダウンリストの構成をやめると、連続してA11セル値変更しても動作します。

  • EXCELマクロ セルに入力したシート名から参照

    よろしくお願いします。 複数のシートがあり、それぞれ 1109,1110,1111,1112,1201,1202,1203,1204,1205 と名前がついています。 それぞれのシートには月毎のデータが入っています。 Sub Macro1() Columns("F:J").Select Selection.ClearContents Sheets("1205").Columns("A:E").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("C4:E5"), CopyToRange:=Range("F2:J2"), Unique:=False End Sub ↑のマクロをSheet3で作りましたが、4行目の「Sheets("1205")」の1205の部分を可変で作れればと 思っています。Sheet3のC3セル内に入力したシート名(1109や1203等)でフィルタ出来ると助かります。 どうぞよろしくお願いします。

  • マクロの記録で作ったのですが、バックヤードで可動するようにできないでしょうか?よろしくお願いします

    下記のマクロを記録で作成したのですが素人のためこれ以上がわかりません。 やりたいことは、バックヤードで可動するようにしたいのと、 (現在はシートが移動したりマウスを動かすと読み込む時間がずれます) 実行間隔を任意で指定したセルから実行間隔を取得したいのですが。 よろしくお願いします。 下記のマクロはデータロガーから信号を定期的に記録でするにしてあります。 Sub Macro2() ' Sheets("表示").Select Range("B10:D10").Select Selection.Copy Sheets("DATA").Select Range("A1").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False Selection.Insert Shift:=xlDown If Range("J8").Value = 999 Then Application.Run "ストップ3" Else Application.Run "Macro3" End If End Sub Sub Macro3() Sheets("DATA").Select Range("J8").Select Selection.ClearContents 実行間隔 = Now + TimeValue("00:00:05") Application.OnTime TimeValue(実行間隔), "Macro2" End Sub Sub ストップ3() Sheets("DATA").Select Range("J8").Value = 999 End Sub

  • 複数のシートにまたがり、フィルタオプションの設定から値を抽出するマクロ

    複数のシートにまたがり、フィルタオプションの設定から値を抽出するマクロを組んでおります。 表示したくないシート(data,output)を非表示にしたら、エラーが出てしまいました。 非表示シートの状態で処理することはできませんでしょうか。 Sub Macro7() Application.ScreenUpdating = False Sheets("data").Select Columns("A:J").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Sheets("マップ").Range("E2:N3"), Unique:=False Columns("A:J").Select Selection.Copy Sheets("output").Select Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.Copy Sheets("マップ").Select Range("E5").Select ActiveSheet.Paste Range("H4").Select Sheets("data").Select Application.CutCopyMode = False ActiveSheet.ShowAllData Sheets("マップ").Select End Sub

  • エクセル「マクロの記録」を少し直したい

    マクロの記録で作った下記を Sub Macro1() Sheets("Sheet1").Select Rows("6:6").Select Selection.Copy Sheets("Sheet2").Select Rows("2:2").Select ActiveSheet.Paste End Sub 以下のように書き換えたら、2行目(Paste)がエラーになりました。 Sub ts1() Sheets("Sheet1").Rows("6:6").Copy Sheets("Sheet2").Rows("2:2").Paste End Sub セレクトしないで行ないたいのです。 どう直せばいいでしょうか?

  • エクセル マクロの記憶で記憶する自動マクロの編集

    こんにちわ。 エクセルで、マクロを記憶させて実行しています。 この自動で操作をしてくれるマクロを、50回繰り返したいのですが、 マクロの編集で文字を出して、この文字に何かを付け足すことで 50回繰り返すことはできますでしょうか? 以下、文字を出した画面です。(適当な操作を記憶させただけです) Sub あき() ' ' あき Macro ' マクロ記録日 : 2011/8/20 ユーザー名 : user ' ' Range("A1").Select Selection.ClearContents Sheets("RESULT_B(1)").Select Selection.AutoFilter Field:=1, Criteria1:="=", Operator:=xlAnd Range("A3").Select Sheets("Sheet1").Select Range("C1").Select Selection.Cut Sheets("RESULT_B(1)").Select Range("A3").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("D1").Select Selection.Cut Sheets("RESULT_B(1)").Select Range("H3").Select ActiveSheet.Paste Sheets("Sheet1").Select End Sub このすべての作業を繰り返したいのですが、 お手数ですが、ご存知の方、 どこにどういう言葉を入力したらよいのか教えて頂けませんでしょうか。 当方素人の為、訳の分からない文章になってしまい 申し訳ありません。 よろしくお願い致します。

  • Excelのイベントマクロ

    Private Sub Worksheet_Activate()に関する質問です。 ワークシート1と2があるとします。 ワークシート1は普通のデータが記されており、それのソートを実行するマクロをMacro1、そのデータから重複したものを外してソートするマクロをMacro2とし、Macro1から呼び出してます。 今、シート2を開いたときは必ず、シート1でMacro1を実行するようにしたいのですが、以下のように記述すると、無限ループになってしまいうまくいきません。 どなたか、方法をお教えください。 Sheet2に記載したイベントマクロ Private Sub Worksheet_Activate() Sheets("Sheet1").Select Macro1 Sheets("Sheet2").Select End Sub 標準モジュールに記載したマクロ Sub Macro1() Dim team As Integer ActiveSheet.Unprotect ("pass") Range("A3:c18").Select Selection.Sort Key1:=Range("c3"), Order1:=xlAscending, Key2:=Range("A3") ,Order2:=xlAscending, Header:=xlNo,OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal team = Range("b1").Value ActiveSheet.PageSetup.PrintArea = "$A$3:$c$" + CStr(team + 2) Macro2 Range("A1").Select ActiveSheet.Protect ("pass") End Sub Sub Macro2() Range("i3:j18").ClearContents Range("i3").Select Selection.Consolidate Sources:="R3C6:R18C7", Function:=xlMax, TopRow:=False,LeftColumn:=True, CreateLinks:=False Range("i3:k18").Select Selection.Sort Key1:=Range("k3"), Order1:=xlAscending, Header:=xlNo,OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal Range("j3:j18").Select Selection.NumberFormatLocal = "0_);[赤](0)" End Sub

  • 指定した時間に実行するマクロ

    Sub データー削除() Sheets("Sheet2").Select Rows("3:17").Select Selection.ClearContents Range("A1").Select ActiveWorkbook.Save ActiveWorkbook.Close End Sub データーAというエクセルBOOKに 上記の単純なマクロが組み込まれています このBOOKは普段は常に閉じている状態です このBOOKがAM0:00に自動で開いて上記のマクロの実行できるように するにはどの様にしたらいいでしょうか? on timeとかいう方法を使うらしいでんすが使い方がよくわかりません

  • エクセル2007マクロ シート間のセルコピー

    [Sheet1]にあるデータを[Sheet2]にコピーするマクロボタンを[Sheet2]に作りたいのですが、マクロがよく分からないので、「マクロの記録」で作成してみました。 Sub siken() ' ' siken Macro ' ' Sheets("Sheet1").Select Range("A1").Select Selection.Copy Sheets("Sheet2").Select Range("A1").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B3").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B3").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B6:D6").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B6").Select ActiveSheet.Paste End Sub (実際はもっと多くのセルをコピーします) マクロを実行すると、ちゃんとコピーできるのですが、セルをコピーする都度[Sheet1]と[Sheet2]が交互に表示されます。 コピー元の[Sheet1]を表示させずにマクロを実行させるにはどのようにしたらよいのでしょうか? よろしくお願いします。

  • 編集を許可しているセルの削除がマクロで出来ない

    エクセル2013でC12:J536まで「範囲の編集を許可」して、シートを保護しています。 入力に関しては意図したとおりに保護、入力ができるのですが、許可範囲だけを指定した下記のマクロで削除しようとすると Selection.ClearContentsが黄色ハイライトして止まります。 保護を解除するとマクロで削除できるのですが。 何がまずいのでしょう? Sub 削除() ' ' 削除 Macro Range("C12:J536").Select Selection.ClearContents End Sub

専門家に質問してみよう