Un bucle se compone de 4 'partes':
Inicio del bucle, final del bucle, condición de salida/retención y código interno al bucle.
Entonces como puedes ver, no hay forma más corta de expresar 4 ideas que expresando las 4 ideas. Esto s como un vaso, puede tener o no asa, pero si tiene asa puede cogerse mejor pero ya es una jarra no un vaso.
Si un bucle DO sólo ha de ejecutarse como mucho 1 sóla vez podría ser sustituído por un bloque if ... end if, pero también un bloque if se compone de 4 partes (el bloque más sencillo): Inicio del bloque if, final del bloque if, condición, código interno si cumple la condición...
Aunque el inicio de un bloque (o el final ) se le una la condición realmente siguen siendo 4 partes, pero si alguien quiere considerarlo unido e indicar que son 3 partes, no es materia de discusión, pués sólo son formas de entender una misma cosa.
Ahora si con 'corta' quieres decir otra cosa... piensa que una cosa es el lenguaje de 'expresión' y otra cosa lo que el compilador escribe finalmente, entonces no debe preocuparte que si las instrucciones fueran : "IniciarBucleCondicional .... MientrasLaSiguientecondiciónSeCumpla" aunque esto sea más largo que "Do ... loop while" al compilar serían las mismas instrucciones... Un código VB ligeramente más largo no necesariamente genera un compilado más largo, es decir no te bases en la cantidad de palabras escritas para deducir que un determinado código será más breve y rápido cuando se compile que uno equivalente con 2 palabras más.