• 締切済み

エクセルのシートをコピーしたら、マクロが・・・

こんにちは。 小さい図書室の運営をしている者です。 前回、こちらに質問を投稿したところ、とても役立つアドバイスを頂き、すぐに解決したので、今回も質問させていただきます。 今、図書の管理をすべてPCで行っています。 エクセルの「貸出管理」と言うブックで図書の貸出管理を行っています。 フィルタを使って図書の検索をした後、次に図書データを入力すべきセルにボタン一つで戻れるようにマクロを登録してあります。 このマクロを同じブック内の他のシートにコピーして使いたいのですが、コピーするとシートのテーブル名が変わってしまうためマクロでエラーが出てしまいます。 同じブック内の複数のシートでこのマクロを使う場合、いちいちシート名を変えなければならないのでしょうか?? もしくは、シートそれぞれに違うマクロを登録しなければならないのでしょうか?? ちなみに、登録されているマクロは次の通りです。 Sub 戻り() ' ' 戻り Macro ' ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=12 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=10 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=9 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=7 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=6 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=4 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=3 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=2 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=1 Range("テーブル2[貸出日]").Select Selection.End(xlDown).Select Selection.Offset(1, 0).Select End Sub この説明で分かって頂けますでしょうか?! どうか御回答お願いいたします!!

みんなの回答

回答No.2

シート名は変数にします。  Dim SheetName As String 標準モジュールに記述します。 Public Sub やりたい処理(SheetName As String) ActiveSheet.ListObjects(SheetName).Range.AutoFilter Field:=12 End Sub 各シートから標準モジュールに記述したSubを呼びます  Call やりたい処理(ActiveSheet.Name)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> このマクロを同じブック内の他のシートにコピーして使いたいのですが、 ブックそのものをコピーしてバックアップを作成してから始めてください。 1)いままで使用していたシートをコピーする。(Ctrlキーを押したままシート見出しをドラッグする) 2)いままで使用していたシートの名前を変更する(末尾にBackupを追加するなど) 3)コピーしたシート名の末尾に補われている(2)などを消して、いままで使用していたシート名にする。 ではどうでしょう?