Вот другой подход. Вместо того, чтобы перебирать каждый из выбранных слайдов для создания дубликата, он просто копирует и вставляет. Он также помещает их в конец презентации.
Обратите внимание, что mySlides
был надлежащим образом объявлен как SlideRange, как уже указывал Рикардо.
Также обратите внимание, что On Error Resume Next
имеет был удален, поскольку он может скрывать ошибки при неправильном использовании, как также указывал Рикардо.
Option Explicit
Public Sub DuplicateSlideMultipleTimes()
Dim ans As String
Dim num_copies As Long
num_copies = 0
Do
ans = InputBox("How many copies of the selected slides do you want to make?")
If Len(ans) = 0 Then Exit Sub
If IsNumeric(ans) Then
num_copies = CLng(ans)
If num_copies > 1 Then Exit Do
End If
MsgBox "Invalid entry, try again!", vbExclamation
Loop
Dim mySlides As SlideRange
Set mySlides = ActiveWindow.Selection.SlideRange
Dim i As Long
For i = 1 To num_copies
mySlides.Copy
ActivePresentation.Slides.Paste
Next i
MsgBox "Completed!", vbExclamation
End Sub