جف می خواهد یک کپی از کاربرگ اصلی خود ایجاد کند، نام کاربرگ جدید را بخواهد، و آن را از داخل یک ماکرو به انتهای برگه های کاربرگ منتقل کند. او سعی کرد برای انجام این کار یک ماکرو ضبط کند، اما موفق نشد.
این واقعیت که ماکرو ضبط شده کار نمی کند خیلی تعجب آور نیست. وقتی یک ماکرو را ضبط می کنید، به اکسل می گویید که مراحلی را که برمی دارید ثبت کند. این مراحل (در این مثال) شامل نام گذاری کاربرگ بود، بنابراین آن نام در ماکرو ثبت شد. برای بار دوم سعی کنید ماکرو را اجرا کنید، با یک خطا مواجه خواهید شد زیرا صفحه کاری که می خواهید در پاس دوم ایجاد کنید، قبلاً در اول ایجاد شده است.
در این حالت باید یک ماکرو به صورت دستی بنویسید. می توانید با ضبط فرآیند شروع کنید و کدی مانند زیر دریافت خواهید کرد:
Sub Macro1()
Sheets("Master").Select
Sheets("Master").Copy After:=Sheets(3)
Sheets("Master (2)").Select
Sheets("Master (2)").Name = "NewMaster"
End Sub
توجه داشته باشید که کد کاربرگ را (بعد از صفحه سوم) قرار می دهد و سپس همیشه آن را همان نام می گذارد. اینجا چیزهای زیادی برای تغییر وجود دارد کاری که می خواهید انجام دهید این است که آن را به چیزی شبیه به زیر تغییر دهید:
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
این ماکرو کاربرگ به نام "Master" را در انتهای لیست برگه کپی می کند (مهم نیست چند برگه در ورک بوک داشته باشید) و تا زمانی که یک نام معتبر وارد شود به درخواست نام کاربرگ جدید ادامه می دهد.