dポイントプレゼントキャンペーン実施中!

シートを指定枚作成するマクロを作りました。
しかし、コピー元であるsheets (1)にはマクロが組まれており、これを実行するとコピーしたシートにもマクロが付いてきてしまいます。
sheets(1)のマクロは残したままでいいのですが、それ以外のシート(追加するシート)をマクロなしでコピーする方法はあるでしょうか?
ご存じの方がいましたら、どのように直せばいいか教えていただきたいです。

Public Sub シートコピー()
Dim シート数 As Variant

シート数 = Application.InputBox(prompt:="コピーしたいシート数を入力してください", _
Title:="数値入力", _
Type:=1)
If TypeName(シート数) = "Boolean" Then
MsgBox "キャンセルします"
Exit Sub
End If

Dim i As Long

For i = 1 To シート数
Sheets(1).Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "パターン" & i
Next i

Sheets(1).Select

End Sub

A 回答 (3件)

こんにちは



>マクロなしでコピーする方法はあるでしょうか?
シートのコピーをせずに、
 ・新規シート作成
 ・シート全体(=Cells)をコピペ
すればできるでしょう。
(2枚目以降はそのシートをコピーでいけます)

そんなことをしなくても、事前にコピー用の雛形(マクロなしのシート)を作成しておいて、非表示にでもしておけば、ほぼ現状のコードのままでもいけますね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
Sheets(1).Copy After:=Sheets(Sheets.Count)をSheets(1).Cells.Copy After:=Sheets(Sheets.Count)にすればよいということでしょうか?(先ほど試すとエラーになってしまいました)

お礼日時:2021/01/14 13:11

No.1さんの回答に補足します。


マクロの記載場所をシートではなく標準モジュールのModule1へ移すと良いでしょう。

VBAエディタの画面で [挿入]→[標準モジュール]。
左側のプロジェクトエクスプローラーで 標準モジュール をWクリック。

あとこれ↓も参考になるかも
https://oshiete.goo.ne.jp/qa/2167570.html
    • good
    • 0
この回答へのお礼

このマクロは標準モジュールに記載しています...
その質問もすでに拝見しましたが、初心者なものでコードのみでなにがどうなっているかが分からず...

お礼日時:2021/01/14 13:07

そのコードを、シートではなくブックに移せばいい。

    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ブックに移すというのは、このコードをThisWorkbookに記載するということでよろしいのでしょうか?

お礼日時:2021/01/14 13:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています