' [325.xls] ' [Module1] のコード '★★☆ モジュールを指定してコードのコピー ☆★★ Option Explicit Sub start() Dim my_module As CodeModule Dim ad_module As CodeModule Dim i As Integer '新ブックを挿入 Workbooks.Add [B2] = "これは、新しく挿入された " & ActiveWorkbook.Name & " です" [B3] = "ここにもコピーされた Worksheet_SelectionChange マクロ" [B4] = "があります確認してみて下さい" [B2:B4].Font.ColorIndex = 3 '変数に"Sheet1"の"CodeModule"を代入 Set ad_module = ActiveWorkbook.VBProject.VBComponents.Item("Sheet1").CodeModule '自分自身(このマクロの存在するブック)の"Title"の"CodeModule"も変数に代入 'ここでコピーするモジュールを指定する Set my_module = ThisWorkbook.VBProject.VBComponents.Item("Sheet1").CodeModule 'ここでは新ブックにコピーするので、Option Explicit(宣言の強制するための宣言)の削除が目的 '新ブックでない場合、空白行も含めてすべての行の削除 If ad_module.CountOfLines > 0 Then For i = 1 To ad_module.CountOfLines ad_module.DeleteLines 1 Next End If 'Sheet1 の1行目からすべての行を新ブックにモジュールに文字列を追加 ad_module.AddFromString my_module.Lines(1, my_module.CountOfLines) End Sub ' [Sheet1] のコード Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) Application.EnableEvents = False [A1].Activate MsgBox "これは " & Chr(10) & ThisWorkbook.Name & _ " の " & Chr(10) & "Worksheet_SelectionChange マクロで実行しています" Application.EnableEvents = True End Sub