• ベストアンサー

複数のワークシートのイベントプロシージャをまとめて変更できますか?

すべてのシートのイベントプロシージャを一気に書き換える方法ってありますでしょうか? 現在、一つのブックに60枚のワークシートがあり、それぞれのシートに全く同じイベントプロシージャが書かれています。 その全てのプロシージャのセルの指定をrange("A1")→range("C1")というふうに変えたいのですが、60枚のシートをひとつづつ変えていくのはとても面倒なので、まとめてやる方法はないかと考えたのです。 よろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 VBEditor 上で、編集--置換 カレントプロジェクトで、全置換すれば良いけれども、 だいたい、全シートのイベントで、同じイベントなら、ThisWorkbook に、例えば、以下のようなイベントを置けばよいです。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) なお、プロジェクト・グループですと、特別なツールが必要です。

pinponpanx
質問者

お礼

ブックにこんなイベントがあったのですね。 知らなかったです。 早速使わせてもらいます。 ありがとうございました。

その他の回答 (2)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

ありません そのための変数ですから 対策は 変更の可能性が場合は、変数を使用する イベントを起動のみに使用して メインの処理はで標準モジュールで処理する などなど

pinponpanx
質問者

お礼

ありがとうございました。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

1枚のシートを「シートの移動またはコピー」で「コピー」をする そのシートのデータを消去 そのシートのイベントプロシージャを書き換え 上記シートを必要数、「シートの移動またはコピー」で「コピー」する (イベントプロシージャも付随して「コピー」されます。) 既存の各シートのセルデータを、上記各シートに順次貼り付ける (新規ブックに「コピー」して纏めたほうが良いかも知れません。) 大雑把ですが、上記のような作業をマクロ化すればどうでしょうか。 マクロでマクロを書き換えることも可能ではあると思います。 しかし、上級レベルの知識が必要ですし、危険だとおもいます。 マクロウイルスにも繋がる恐れがあるので、回答は寄せられないと思います。

pinponpanx
質問者

お礼

ありがとうございました。

関連するQ&A

  • イベントプロシージャについて(エクセル)

    あるエクセルのブックの全てのシートに 適用されるようなイベントプロシージャを 作りたく思っています。 1、あるセルをダブルクリックする 2、そのセルが含まれている行を選択する 3、メッセージボックスで「現在の行を削除する」  旨の確認を求めて 「はい」ならば削除  「いいえ」なら何もしない 1、あるセルをシングルクリックする 2、そのセルが含まれている行を選択する 3、メッセージボックスで「現在の行をコピーして   自身の一つしたの行に挿入する」  旨の確認を求めて 「はい」ならば実行  「いいえ」なら何もしない という二つのモノを作りたく思っています 自分で色々HPを見たり 書籍も見てみたのですが なかなかわかりませんでした 「ブック上での全てのシートで適用される」 という記述はどうしたらよろしいのでしょうか? 皆様よろしくお願いします

  • エクセル2002 複数シートの一括変更

    エクセル初心者ですので、説明が長く解りづらいと思いますが、困っていますので回答よろしくお願いします。 「名称」「所在」「日付」の共通した項目のある複数のシート「Aシート」「Bシート」「Cシート」を一つのブック(仮にファイル名ブック1とします)にまとめています。AシートのA1セル、BシートのA1セル、CシートのA1セルに同じ項目(名称・所在・日付)を入れたい場合、1回の入力で全てのシートの同一項目が変更できるようにBシート、Cシートに「=Aシート!A1」の式を入れ、AシートのA1セルに名称等を記入すればBシート、Cシートの同一項目も一括して書き換わるようにしています。 同一ブックで使っている分には、上記の方法で共通した項目を一括変更できるのですが、別のブックからシートをコピーした場合、「=Aシート!A1」の式がかわってしまいコピーしてきたシートの項目だけが変わらない状態になります。 例えば、ブック1と書式が同じブック2(シートA’、シートB’、シートC’の複数シートで構成され各シートはブック1のシートA・B・Cと同じ書式)がありブック1にブック2のシートB’をコピーした場合シートB’のA1セルは、「=[ブック2.xls]Aシート!A1」となり自動的にこのシートの項目が変換されません。このとき、[ブック2.xls]の部分だけを毎回消して使っていますが、シートが増えると作業時間もかかりますし、複数のスタッフで使う場合この使い方をそれぞれに説明する必要があり困っています。 解りづらい説明で申し訳ありませんが回答よろしくお願いします。

  • イベントプロシージャが動作しない

    アクセスVBAで、フォームでイベントプロシージャと指定し、該当イベントプロシージャをコーディングしてオブジェクト化しているのに、イベントプロシージャが動作しません。 何か良い解決方法がありましたら、教えていただけないでしょうか?よろしくお願いいたします。

  • 別ブックの同一ワークシートの集計

    お世話になります。 早速ですが、Excelでブックが5つ、ワークシートがそれぞれ40あるとします。 これを、別ブックにまとめたいのです。 ワークシートの構成は全て、同じです。 同一ワークシート、同一セルの集計を別のブックにまとめたいです。 伝わりますでしょうか? よろしくお願いします。

  • VBAのイベントプロシージャについて

    VBAのイベントプロシージャについて VBAを勉強していますが、どうしても上手くいかないので質問させて頂ます。  ------------   Bookの中身    sheet1     A1:AA     A2:  ------------  【処理内容】  sheet1のA1には、AAという文字があり、ハイパーリンクが設定してあります。  sheet1のA1をクリックすると、sheet2が開かれます。 sheet2をを開くとsheet1のA2には、1を挿入するという処理を行いたい。  Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)      :  End Sub  を使用しましたが、上手くいきません。  ご教授の程、お願いします。  

  • Excel2010 イベントプロシージャが動かない

    VBAはほとんどいじったことのない初心者です。 イベントプロシージャをインターネットから探してきて、コピペして使おうとしてます。 Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo ERR_HANDLER If Target.Address(False, False) = "E2" Then ActiveSheet.Name = Range("E2").Value End If Exit Sub ERR_HANDLER: MsgBox "現在のE2セルの値はシート名にできません。" End Sub やりたいのは、セルE2の値に変更があったら、そのセルの値をシート名にしたいということです。 初心者には難しいでしょうか? ご教示いただけると幸いです。 よろしくお願いします。

  • 複数ワークシートの同一印刷範囲指定(エクセル)

    エクセルでのマクロについての質問です。例えば同一ブック内に、シート1で作成した「○○請求書」をコピーしてシート1と全く同じ内容の99個のワークシートを作成しました。このとき、シート1からシート100まで一部の範囲だけ(例えばセルA3からH50)を同時に印刷範囲指定するにはどのようなマクロを作成すればよいのでしょうか、マクロの参考書等も見て自分なりにチャレンジしてはみたのですがうまくいきません。(印刷範囲まで指定したシートをコピーすればよかったのかもしれませんが・・・)

  • 全てのワークシートのレイアウト変更について

    いくつも全く同じレイアウトのエクセルシートがあります。この全てのシートのレイアウトをいっぺんに全く同様なレイアウト変更(ある場所のセル内容を別の場所にカット&ペーストで移したい)したいのですが、マクロでどう書けばいいかお教え下さい。シート名を一つ一つ指定するやり方では実行できましたが、問題は一つのファイルのワークシートの数は毎回変更されるところです。因みにワークシート名(タブの部分)のネーミングルールは同じです(Plan(1), Plan(2)....Plan(n)となります)。以下に一つ一つ指定した場合のマクロを載せます。宜しくお願いいたします。 Sheets("PLAN(1)").Activate Rows("29:31").Select Selection.Delete Shift:=xlUp ActiveWindow.LargeScroll ToRight:=-1 Range("j3:q28").Select Selection.Cut Range("a29").Select ActiveSheet.Paste Range("Q23").Select Sheets("PLAN(2)").Activate Rows("29:31").Select Selection.Delete Shift:=xlUp ActiveWindow.LargeScroll ToRight:=-1 Range("j3:q28").Select Selection.Cut Range("a29").Select ActiveSheet.Paste Range("Q23").Select 以下、同様です。

  • EXCELでワークシートを検索して値を返したい。

    こんばんは。 いろいろ調べてみたのですが、わからなかったので質問させていただきます。 EXCELで「111」「222」「333」「444」「555」という五つのワークシート名を持つブックがあります。 「111」のシートのセル"A1"に,"222"と入力すると、隣のセル"A2"にシート「222」の特定のセルの値(例えばC20のセルの値)を返し、セル"A1"に「555」と入力するとセル"A2"にシート「555」の特定のセルの値を返すといったものを作るには、どうしたらいいんでしょうか? できれば関数だけで作りたいのですが、もしむりならマクロではどういうコードになるのでしょうか? よろしくお願いします。

  • 複数のワークシートの共通のセル

    初心者です。教えてください エクセル(Office 2003)で、50枚のワークシートがあります。 これらのワークシートのすべてから、共通のセル(たとえばA3)の数値を抽出して、別のワークシートに一覧を作ることというのは可能なのでしょうか。 よろしくご教授ください。

専門家に質問してみよう