Добавление управляющих структур и возвратов к наконец {} блоки являются просто другим примером "просто, потому что Вы можете" злоупотребления, которые рассеиваются всюду по фактически всем языкам разработки. Jason был прав в предложении, это могло легко стать кошмаром обслуживания - аргументы против ранних возвратов из функций применяются больше так к этому случаю "поздних возвратов".
Наконец блоки существуют для одной цели, чтобы позволить Вам полностью убирать после себя, неважно, что произошло во всем предыдущем коде. Преимущественно это закрывается / выпуск указателей файла, соединения с базой данных и т.д., хотя я видел, что он был расширен для высказывания добавления в сделанном на заказ аудите.
Что-либо, что влияет на возврат функции, должно лечь в попытке {} блок. Даже если у Вас был метод, посредством чего Вы проверили внешнее состояние, сделал трудоемкую операцию, то проверенный, которые указывают снова в случае, если это стало недопустимым, Вы все еще захотите вторую проверку в попытке {} - если бы это находилось внутри наконец {} и долгая отказавшая операция, Вы тогда проверили бы, что указывают во второй раз напрасно.
Было бы элегантно обнаруживать смену слайдов, но не было бы более практичным, если бы докладчик вводил горячую клавишу всякий раз, когда происходит изменение темы ? Или что-то подобное, но сотрудничая с докладчиком, поскольку он лучше знает, когда тема меняется.
Извините, что не предоставил элегантного ответа.
Вот код, который поможет вам в этом.
Во-первых, в PowerPoint VBE создайте класс, назовите его clsPPTEvents . Поместите в него следующее:
Public WithEvents PPTEvent As Application
Private Sub PPTEvent_SlideShowNextSlide(ByVal Wn As SlideShowWindow)
MsgBox "Position: " & Wn.View.CurrentShowPosition & ", Time: " & Time
End Sub
Затем создайте модуль, назовите его как угодно и поместите в него следующее:
Public newPPTEvents As New clsPPTEvents
Sub StartEvents()
Set newPPTEvents.PPTEvent = Application
End Sub
Sub EndEvents()
Set newPPTEvents.PPTEvent = Nothing
End Sub
Запустив подпрограмму StartEvents
, вы можете перейти в режим презентации и при каждом изменении слайда , номер слайда (положение) и текущее время изменения будут отображаться в окне сообщения. Вы можете использовать эти (или другие) переменные для записи в файл. После выхода из текущего слайд-шоу вы можете запустить EndEvents
, чтобы остановить обработчик API.