ワークシートコードの自動コピー(Microsoft Excel)
ティムは、ユーザーがワークシートタブを右クリックし、[コードの表示]を選択してワークシートのVBAコードシートを開くことができることを正しく指摘しています。彼は、セル、列、および行を自動的に操作するコードを記述しています。このコードは、ユーザーが新しいワークシートを追加した場合でも、ブック内のすべてのワークシートで使用できる必要があります。 Timは、VBAを使用して、1つのワークシートのコードをワークブックの新しいワークシートに自動的にコピーする方法があるかどうか疑問に思います。
この問題に取り組む方法はいくつかあります。 1つの方法、そしておそらく最も簡単な方法は、ワークシートのコードシートからマクロを削除し、ThisWorkbookモジュールに移動することです。ワークシートのコードシートは、ワークシートのタブを右クリックしたときに表示されるものです。そのシートのコードは、ワークシートで、そのワークシートでのみ発生するイベントを処理することを目的としています。コードをThisWorkbookモジュールに移動しても、イベントは引き続き処理できますが、これらのイベントはワークブック内のすべてのワークシートに適用されます。
たとえば、ワークシートタブを右クリックしてコードウィンドウを見ると、最初はWorksheet_SelectionChangeイベントで作業しています。このコードをThisWorkbookモジュールに移動する場合は、Workbook_SheetChangeイベント内に配置できます。
コードのこのような「レベル変更」が何らかの理由で機能しない場合、別のアプローチは、ワークブック内にテンプレートワークシートを作成することです。
「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トレーニングのソースです。
このヒント(7880)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。
linkワークシートコードを自動的にコピーする。