Menu



Główna

Kurs:

Wstęp

Edytor

Pierwszy program

Instrukcje warunkowe

Pętle


Przydatne makra:

Sheet delete

Nie zapisuj

Iloczyn macierzy

IP - ping

Pętle


Pętle to bardzo użyteczne struktury programistyczne, umożliwiające wykonywanie powtarzających się operacji. Np. jak wypisać na ekranie kody znaki o kodach ASCII liter od 65 do 75? Można tak:

Sub WypiszKody1()

Dim strMsg As String

strMsg = Chr(65) & vbCrLf & _
Chr(65) & vbCrLf & _
Chr(66) & vbCrLf & _
Chr(67) & vbCrLf & _
Chr(68) & vbCrLf & _
Chr(69) & vbCrLf & _
Chr(70) & vbCrLf & _
Chr(71) & vbCrLf & _
Chr(72) & vbCrLf & _
Chr(73) & vbCrLf & _
Chr(74) & vbCrLf & _
Chr(75)

MsgBox strMsg

End Sub

Działa, choć mało to eleganckie. Pamiętajmy jednak, że w pewnych sytuacjach bez pętli nie można się obyć. Jeżeli zastosujemy pętlę kod będzie bardziej zwarty i zajmie mniej miejsca.

Sub WypiszKody2()

Dim strMsg As String

For i = 65 To 75
strMsg = strMsg & Chr(i) & vbCrLf
Next i

MsgBox strMsg

End Sub

Wykorzystaliśmy tu pętlę For ...Next. Działa ona w sposób następujący: wszelkie instrukcje występujące pomiędzy słowami kluczowymi For .... i Next zostaną powtórzone tyle razy aż zmienna indeksująca (tutaj i) osiągnie wartość występującą po słowie kluczowym To.

Jeżeli liczba powtórzeń nie jest znana to wygodniej jest zastosować pętlę Do...Loop. Składnia tej instrukcji jest następująca:

Do
...
Loop [Until {wyrażenie_logiczne}|While {wyrażenie_logiczne}]

albo:

Do [Until {wyrażenie_logiczne}|While {wyrażenie_logiczne}]
...
Loop

Wykonanie pętli Do...Loop jest zależne od warunków logicznych występujących po słowach kluczowych Until i While (pamiętajmy o tym że w kodzie może pojawić się tylko jedno z nich). Angielskiemu słowu until odpowiada polskie wyrażenie "aż do". Pętla z tym słowem jest wykonywana aż wyrażenie logiczne osiągnie wartość logicznej jedynki (True - prawda). Natomiast słowo while oznacza "dopóki" i taka pętla wykonywana jest dopóki wyrażenie logiczne posiada wartość logiczną True; gdy osiąga ono wartość False wykonywanie instrukcji w pętli jest przerywane. Wszelkie sytuacje jakie mogą wystąpić w programie można obsłużyć zarówno przy pomocy słowa Until jak i słowa While i tylko od programisty zależy, które z nich wybierze.

Linki
VBA: