ジェフは、自分の「マスター」ワークシートのコピーを作成し、新しいワークシートの名前を入力するように求め、それをすべてマクロ内からワークシートタブの最後に移動したいと考えています。彼はこれを行うためにマクロを記録しようとしましたが、うまくいきませんでした。

記録されたマクロが機能しなかったという事実は、それほど驚くべきことではありません。

マクロを記録するときは、実行した手順を記録するようにExcelに指示します。

これらの手順(この場合)にはワークシートの名前が含まれているため、名前はマクロに記録されました。マクロをもう一度実行しようとすると、2番目のパスで作成しようとしているワークシートが最初のパスですでに作成されているため、エラーが発生します。

この場合、マクロを手動で作成する必要があります。プロセスの記録から始めることができ、次のようなコードが得られます:

Sub Macro1()

Sheets("Master").Select     Sheets("Master").Copy After:=Sheets(3)

Sheets("Master (2)").Select     Sheets("Master (2)").Name = "NewMaster"

End Sub

コードはワークシートを(3枚目のシートの後に)配置し、常に同じ名前を付けることに注意してください。ここで変更することがたくさんあります。あなたがしたいことはそれを次のようなものに変えることです:

Sub CopyRename()

Dim sName As String     Dim wks As Worksheet     Worksheets("Master").Copy after:=Sheets(Worksheets.Count)

Set wks = ActiveSheet     Do While sName <> wks.Name         sName = Application.InputBox _           (Prompt:="Enter new worksheet name")

On Error Resume Next         wks.Name = sName         On Error GoTo 0     Loop     Set wks = Nothing End Sub

このマクロは、「マスター」という名前のワークシートをシートリストの最後にコピーし(ワークブックにシートがいくつあるかに関係なく)、有効な名前が入力されるまで新しいワークシート名の入力を求め続けます。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(11929)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。

Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります:

link:/ excel-Creating_and_Naming_a_Worksheet_Using_a_Macro [マクロを使用したワークシートの作成と命名]