Просто для того, чтобы поместить все отличные комментарии в код (и добавить небольшое изменение моего собственного):
Sub PopupBox()
If MsgBox("Add Comments or Images to Category?", vbYesNo + vbQuestion, "Comment") = vbYes Then
ActiveWorkbook.Sheets("Comments").Activate
ActiveWorkbook.Sheets("Comments").Range ("B7")
End If
End Sub
В большинстве случаев я бы поступил точно так же, как вы, назначив ответ MsbBox для переменная, но в чем-то таком простом я бы не стал беспокоиться о дополнительном коде и просто поместил бы MsgBox прямо в «If».
В настоящее время на уровне синтаксиса языка нет эквивалента C # return return в VB.Net.
Однако недавно в журнале MSDN Билл Маккарти написал о том, как реализовать аналогичный шаблон в VB.Net 9.0
См. Мои ответы здесь:
Подводя итог:
VB.Net не имеет yield, но C # реализует yield путем преобразования вашего кода в конечный автомат за этой сценой. Ключевое слово VB.Net Static
также позволяет вам сохранять состояние внутри функции, поэтому теоретически вы должны иметь возможность реализовать класс, который позволяет вам писать аналогичный код при использовании в качестве Static
член метода.
Нет доходности возврата в VB.NET :( Просто создайте список и верните его.
Незаметно для себя компилятор создает класс перечислителя для выполнения этой работы. Поскольку VB.NET не реализует этот шаблон, вы должны создать свою собственную реализацию IEnumerator (Of T)