Подтвердить что ты не робот

"While.. End While" не работает в VBA?

Ниже приведен код VBA для Excel. Я использую редактор Visual Basic, который поставляется с Excel 2007.

Dim counter As Integer
counter = 1
While counter < 20
    counter = counter + 1
end while '<- the compiler is complaining about this statement

Код не компилируется. Над кодом у меня есть только декларации. Согласно MSDN, это должно работать, но это не так. Что случилось?

4b9b3361

Ответ 1

Конструкции

While завершаются не с помощью End While, а с Wend.

While counter < 20
    counter = counter + 1
Wend

Обратите внимание, что эта информация легко доступна в документации; просто нажмите F1. страница, которую вы ссылаетесь на, касается Visual Basic.NET, а не VBA. Хотя (нет каламбурования) существует некоторая степень перекрытия в синтаксисе между VBA и VB.NET, нельзя просто предположить, что документация для одного может быть применена непосредственно к другому.

Также в файле справки VBA:

Совет Оператор Do...Loop обеспечивает более структурированный и гибкий способ выполнения циклов.

Ответ 2

VBA не VB/VB.NET

Правильная ссылка на использование Do..Loop Statement (VBA). Также см. Статью Excel VBA For, Do While и Do до. Один из способов написать это:

Do While counter < 20
    counter = counter + 1
Loop

(Но For..Next может быть более уместным здесь.)

Счастливое кодирование.