- 締切済み
マクロをマクロを使ってコピーしたい
Excel2010です。 今、book1の各シート(ここでは"S1"で特定していますが、たとえばs1、s2、s3の3つがあるとします。)の左上隅「X」マークを右クリックすると出てくる「コードの表示」に以下の内容を記録しています。 ------------- Private Sub Workbook_SheetActivate(ByVal Sh As Object) If Sh.Name = "s1" Then Exit Sub Worksheets("s1").Range("e6") = Sh.Range("an7") Worksheets("s1").Range("e9") = Sh.Range("bj7") Worksheets("s1").Range("e10") = Sh.Range("br7") End Sub ------------- これをbook1のマクロ本体の実行によってbook1のシート"s1"を含むいくつかのシートのあるコピーbook2に、同じようにマクロでこの「Private Sub」をコピーしたいと思っています。どのようのすればいいでしょうか。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- WindFaller
- ベストアンサー率57% (465/803)
関連するQ&A
- マクロでシート名を変更を変更したい
A1セルの値をシート名にするマクロは以下のとおりだと思います。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value End Sub では、E6セルの値をシート名にすることは可能でしょうか? よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- なぜ、ByVal Sh As Objectは
NewSheetイベントについて質問なのですが、 なぜ、ByVal Sh As Objectは、Objectなのでしょうか? Sub Workbook_NewSheet(ByVal Sh As Worksheets) や Sub Workbook_NewSheet(ByVal Sh As Worksheet) にしたら、コンパイルエラーになります。 シートの方では、 Private Sub Worksheet_Change(ByVal Target As Range) のようにrange型で宣言しているのに、なぜシートはオブジェクト型で宣言するのでしょうか?
- ベストアンサー
- オフィス系ソフト
- エクセル2010 マクロで値のみコピー
こんばんは、エクセル2010を使っています。 マクロでデータを値のみをコピーしたいのですが、うまくいきません。 文は 以下の様なものです。 Sub ボタン1_Click() Worksheets("Sheet4").Range("e1").Copy Worksheets("sheet2").Range("b1").PasteSpecial Paste:=xlValues End Sub マクロの画面を閉じようとした時に、Pasteの部分が選択され コンパイルエラー 修正候補:ステートメントの最後 と言うダイアログボックスが出てしまいます。 ご存知の方教えて頂けないでしょうか、よろしくお願いします。 ※ ちなみに Worksheets("Sheet4").Range("e1").Copy Worksheets("sheet2").Range("b1") ならちゃんとコピーされるのですが、コピー元の数式がコピーされるので、値のみをコピーしたいのです。
- ベストアンサー
- Excel(エクセル)
- シートの増減あっても特定セルに連番したい
Excel2007でマクロ作成の初心者です。 すべてのシートのR15セルに、シートの順番どおり 1から連番で番号をつけるマクロを教えていただきました。 Private Sub Workbook_SheetActivate(ByVal Sh As Object) Dim i As Integer For i = 1 To ThisWorkbook.Worksheets.Count Worksheets(i).Range("R15").Value = i Next i End Sub これを以下のように改良したのですが、新しく追加したシートにはなぜか 番号が表示されません。どうしたら、うまく連番が入るようになるでしょうか。 Sub シートに連番() Dim i As Integer For i = 1 To ThisWorkbook.Worksheets.Count Worksheets(i).Range("R15").Value = i Next i End Sub
- ベストアンサー
- Visual Basic
- Excelマクロについて(セルのコピー)
今、マクロで自動的にセルのデータを別シートに貼り付けるというものを作っています。 Private Sub コピー定義() Worksheets("sheet1").Activate 'sheet1をアクティブにする コピー元行 = 2 コピー先行 = 1 コピー元セル = "A" & コピー元行 コピー先セル = "A" & コピー先行 Worksheets("sheet1").Range(コピー元セル).Copy _ Destination:=Worksheets("sheet2").Range(コピー先セル) End Sub これで、sheet1のA2からsheet2のA1にコピーできるのですが、 Private Sub コピー定義() Worksheets("sheet1").Activate 'sheet1をアクティブにする コピー元行 = 2 コピー先行 = 1 コピー元行 = 2 コピー先行 = 1 コピー元セル = "A" & コピー元行 コピー先セル = "A" & コピー先行 コピー元セル = "B" & コピー元行 コピー先セル = "B" & コピー先行 Worksheets("sheet1").Range(コピー元セル).Copy _ Destination:=Worksheets("sheet2").Range(コピー先セル) End Sub とすると、B2の項目しかコピーされません。複数のセルを一度にコピーするマクロの作り方をご存じの方、ご伝授下さい。
- ベストアンサー
- オフィス系ソフト
- マクロでセルのコピー
シート2のE1の値をシート1のJ3にコピーしよおとマクロで書いたのですがエラーが出てうまくいきません。 Private Sub Worksheet_Deactivate() Sheet1.Range("J3").Value = Sheet2.Range("E1") End Sub エラー内容は、実行時エラー'1004' アプリケーション定義またはオブジェクト定義のエラーです。 マクロがあまりくはしくないので修正方法がわかりません。よろしくお願いします。
- ベストアンサー
- Visual Basic
- マクロで二つの構文を繋ぐには
いつもお世話になります。 WIN7 EXCELL2010 です。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value End Sub ThisWorkbook に上記のマクロに下記のマクロを追加したいのですが、 End Sub の ところを End If End With などに変えたのですがうまくゆきません。 御指導お願いできませんでしょうか。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim myRange As Range Set myRange = Intersect(Target, Range("M3:V27")) If Not myRange Is Nothing Then Select Case Target.Value Case "" Target.Value = "○" Case "○" Target.Value = "●" Case Else Target.ClearContents End Select Cancel = True End If End Sub 宜しくお願いいします。
- ベストアンサー
- Excel(エクセル)
- エクセル2003 マクロ機能を使ったコピー
エクセルのマクロ初心者です。 コピー元は、計算式が入ったセルです。 値のみを別のシートへコピーしたいと思っていますが 40番の行でエラーとなってしまします。 行き詰ってしまったため、ご教授いただければ幸いです。 よろしくお願いします。 以下が現在のマクロです。 ================ Private Sub 10 月 = Worksheets("毎月").Cells(1, 2) 20 月 = 月 + 3 30 Worksheets("毎月").Range("F24").Copy 40 Worksheets("年").Range(Cells(月, 3)).Select 50 Selection.PasteSpecial Paste:=xlPasteValues End Sub ================
- ベストアンサー
- オフィス系ソフト
- Excelのマクロを実行するきっかけとなるイベントについて
マクロのイベントに「ワークシートの追加」(Private Sub Workbook_NewSheet(ByVal Sh As Object))がありますが、「ワークシートのコピー」をきっかけに、マクロを実行したい場合は、どのようにすればよいでしょうか? シートタブを右クリックして、コピーを追加のチェックボックスをONにして、同一ブック内にシートをコピーする操作の直後に、マクロを実行したいと考えています。 お知恵をお貸しください。
- ベストアンサー
- オフィス系ソフト
- VBAで二つの構文を繋げるには
いつもお世話になります。 WIN7 EXCELL2010 です。 1) A1に 数値化した日付を入力するとシート名表示に反映される。 例えば 2014/07/31 で A1 には 20140731 と入力するとシート名にも 20140731 が表示 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value End Sub 2) 1)で表示された複数のシートから今日のシート名になっているシートの色付けです。 Private Sub Workbook_Open() Dim mySheet As Worksheet For Each mySheet In Worksheets mySheet.Tab.ColorIndex = 19 If mySheet.Name = Format(Now(), "yyyymmdd") Then mySheet.Tab.ColorIndex = 3 End If Next End Sub 3) 各月をまとめたシートで シート名は 1~12 あります。 このシート名にも色付けするため下記マクロを追加したいのですが、1)のマクロとどう繋げばいいか分かりません。 Private Sub Workbook_Open() Dim sh As Worksheet For Each sh In Worksheets If isnumeric(sh.Name) Then sh.Tab.ColorIndex = xlNone If sh.Name = Month(Now) Then sh.Tab.Color = 255 ' 赤 End If End If Next End Sub 同じ Private Sub Workbook_Open() で始まるので丸められることが可能ならも含めていい方法を御指導いただけると幸甚です。 宜しくお願いします。
- ベストアンサー
- Excel(エクセル)
お礼
早速にお返事をいただきましてありがとうございます。小生、基礎知識・予備知識も皆無に等しいもので、よくわかりません。やりたいことは、 「book1にはbook2を作るメインのマクロがあり、それを実行する一連の動作の中で、上記のことをやりたい」わけです。 具体的な記述を教えていただければ助かります。よろしくお願いします。