ワークシートコードの自動コピー(Microsoft Excel)
ティムは、ユーザーがワークシートタブを右クリックし、[コードの表示]を選択してワークシートのVBAコードシートを開くことができることを正しく指摘しています。彼は、セル、列、および行を自動的に操作するコードを記述しています。このコードは、ユーザーが新しいワークシートを追加した場合でも、ブック内のすべてのワークシートで使用できる必要があります。ティムは、VBAを使用して、1つのワークシートのコードをブック内の新しいワークシートに自動的にコピーする方法があるかどうか疑問に思います。
この問題に取り組む方法はいくつかあります。 1つの方法、そしておそらく最も簡単な方法は、ワークシートのコードシートからマクロを削除し、ThisWorkbookモジュールに移動することです。ワークシートのコードシートは、ワークシートのタブを右クリックしたときに表示されるものです。そのシートのコードは、ワークシートで発生するイベントを処理することを目的としており、そのワークシートでのみ発生します。コードをThisWorkbookモジュールに移動しても、イベントは引き続き処理できますが、それらのイベントはワークブック内のすべてのワークシートに適用されます。
たとえば、ワークシートタブを右クリックしてコードウィンドウを見ると、最初はWorksheet_SelectionChangeイベントで作業しています。このコードをThisWorkbookモジュールに移動する場合は、Workbook_SheetSelectionChangeイベント内に配置できます。
コードのこのような「レベル変更」が何らかの理由で機能しない場合、別のアプローチは、ワークブック内にテンプレートワークシートを作成することです。
「MyMaster」などの名前を付け、新しく作成したワークシートに追加するすべてのコードが含まれていることを確認します。必要に応じて、このワークシートを非表示にすることもできるため、ユーザーの気を散らすことはありません。次に、次のマクロをThisWorkbookモジュールに配置します。
Private Sub Workbook_NewSheet(ByVal Sh As Object) Dim tmpName As String tmpName = Sh.Name Sheets("MyMaster").Copy Before:=Sheets(Sh.Name) Application.DisplayAlerts = False Sheets(Sh.Name).Delete Application.DisplayAlerts = True Sheets("MyMaster (2)").Name = tmpName End Sub
このコードは、新しいワークシートがブックに追加されるたびにトリガーされます。新しく追加されたワークシートの名前(「Sheet4」のようなものになります)を調べ、その名前を一時変数に保存します。
次に、コードはMyMasterワークシートをワークブックにコピーし(ワークシート内のマクロもコピーします)、最初に作成されたワークシートを削除し、新しいMyMasterコピーの名前を元のワークシートと同じ名前に変更します。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(7884)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。
linkワークシートコードを自動的にコピーする。