web-dev-qa-db-fra.com

"While .. End While" ne fonctionne pas dans VBA?

Le code ci-dessous est VBA pour Excel. J'utilise l'éditeur Visual Basic fourni avec Excel 2007.

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

Le code ne se compile pas. Au-dessus du code, je n'ai que des déclarations. Selon MSDN cela devrait fonctionner mais ce n'est pas le cas. Que s'est-il passé?

27
Gorgen

While les constructions ne se terminent pas par un End While mais avec un Wend.

While counter < 20
    counter = counter + 1
Wend

Notez que ces informations sont facilement disponibles dans la documentation; appuyez simplement sur F1. La page vers laquelle vous liez traite de Visual Basic .NET, pas de VBA. Bien que (sans jeu de mots) il existe un certain degré de chevauchement dans la syntaxe entre VBA et VB.NET, on ne peut pas simplement supposer que la documentation de l'un peut être appliquée directement à l'autre.

Également dans le fichier d'aide VBA:

Astuce Le Do...Loop L'instruction fournit un moyen plus structuré et flexible d'effectuer une boucle.

54

VBA est pas VB/VB.NET

La référence correcte à utiliser est Do..Loop Statement (VBA) . Voir également l'article Excel VBA pour, faire pendant et faire jusqu'à . Une façon d'écrire ceci est:

Do While counter < 20
    counter = counter + 1
Loop

(Mais un For..Next pourrait être plus approprié ici.)

Codage heureux.

14
user166390