VBA w Excel9, excel


VBA w Excelu - kurs dla początkujących

0x01 graphic
Pętle warunkowe Do...Loop

Następnym bardzo wygodnym narzędziem są pętle, służą one do wielokrotnego wykonywania danego bloku kodu. Pętle możemy użyć do obliczeń matematycznych, wyodrębniania fragmentów danych lub do wykonywania tych samych operacji na wielu obiektach. VBA pozwala tworzyć kilka typów pętli, jedną z nich jest pętla Do...Loop. Instrukcji Do...Loop użyjemy jeżeli nie wiemy ile razy pętla ma być wykonana. Jest to pętla warunkowa, w której kluczową cechą jest warunek. Instrukcje umieszczone wewnątrz pętli są powtarzane tak długą jak długą pewien warunek jest spełniony (ma wartość True) lub do momentu gdy ten warunek zostanie spełniony (uzyska wartość True). Mamy do dyspozycji jakby pięć odmian pętli Do...Loop, wszystkie z nich działają w podobny sposób różnice przedstawiam w tabeli poniżej.

Tabela. Odmiany pętli Do...Loop

Typ pętli

Opis

Do...Loop

Wielokrotnie wykonuje blok kodu tak długą aż instrukcja warunkowa umieszczona wewnątrz tej pętli wykona instrukcje Exit Do. W tym przypadku użycie instrukcji Exit Do jest praktycznie obowiązkowe gdybyśmy jej nie zastosowali pętla byłaby wykonywana w nieskończoność.

Do While...Loop

Rozpoczyna i powtarza blok kodu umieszczony wewnątrz pętli jeżeli jest spełniony warunek umieszczony na początku tej pętli. Jest to prawdopodobnie najczęściej stosowana odmiana pętli warunkowej, szczegółowo opisałem ją w dalszej części strony.

Do...Loop While

Wykonuje blok kodu umieszczony wewnątrz pętli jeden raz i powtarza go tak długą jak długo jest spełniony warunek umieszczony na końcu pętli.

Do Until...Loop

Rozpoczyna i powtarza blok kodu umieszczony wewnątrz pętli dopóki nie zostanie spełniony warunek umieszczony na początku tej pętli.

Do...Loop Until

Wykonuje blok kodu umieszczony wewnątrz pętli jeden raz i powtarza go do czasu gdy zostanie spełniony warunek umieszczony na końcu pętli .

0x01 graphic

Instrukcja Exit Do

Wewnątrz pętli warunkowej można posłużyć się instrukcją Exit Do. Instrukcja ta kończy działanie pętli i następuje wykonanie pierwszej instrukcji poza pętlą. Konstrukcje taką stosujemy w pierwszej odmianie pętli Do...Loop (patrz tabela powyżej) lub w pozostałych odmianach gdy wykonanie pętli chcemy uzależnić od dodatkowego warunku. Instrukcja Exit Do najczęściej występuje wewnątrz instrukcji If...Then lub Select Case. Wewnątrz pętli można umieścić dowolną liczbę instrukcji Exit Do. Instrukcje Exit Do może być stosowana tylko wewnątrz przedstawionych powyżej odmian pętli Do...Loop. Sposób użycia instrukcji Exit Do przedstawiłem w zaprezentowanym przykładzie na tej stronie.

0x01 graphic

Pętla Do While...Loop

Jak już wspomniałem wszystkie odmiany pętli Do...Loop działają w podobny sposób. Podstawową (prawdopodobnie najczęściej stosowano) odmianą pętli warunkowej Do..Loop jest postać Do While...Loop. W przypadku tej pętli wykonanie kodu VBA rozpoczyna od sprawdzenia warunku który jest umieszczony na początku pętli. Jeżeli warunek nie jest spełniony instrukcje umieszczone wewnątrz pętli są pomijane (pętla nie jest wykonywana) i wykonywany jest kod umieszczony poniżej instrukcji Loop. Jeżeli zaś warunek jest spełniony, VBA wykonuje blok kodu umieszczony w pętli (pętla jest wykonywana).
Wewnątrz pętli znajdują się instrukcje z których przynajmniej jedna zmienia wartość warunku. Po dojściu do instrukcji Loop, VBA wraca do instrukcji Do While, aby ponownie sprawdzić warunek. Jeżeli okaże się że warunek nie jest spełniony wykonanie pętli będzie przerwane. Jeżeli jednak warunek nadal jest spełniony blok kodu pętli zostanie wykonany ponownie. Proces ten powtarza się do momentu w którym warunek nie jest już spełniony. Dlatego z góry nie możemy przewidzieć ile razy pętla będzie wykonana.
Gdyby warunek byłby zawsze spełniony pętla wykonywała by się bez końca.

0x01 graphic

Składnia:

Do While warunek
 [instrukcje]
Loop

0x01 graphic

Objaśnienie:

  • Do - słowo kluczowe świadczące o rozpoczęciu pętli.

  • While - słowo kluczowe mówiące programowi że pętla ma być powtarzana tak długo, dopóki jest spełniony (prawdziwy, daje wartość True) podany warunek.

  • warunek - wyrażenie numeryczne lub wyrażenie znakowe, które powinno być spełnione.

  • instrukcje - jedna lub więcej instrukcji które mają być wykonane w pętli a z których przynajmniej jedna ma wpływ na wartość warunku.

  • Loop - słowo kluczowe oznaczające koniec pętli.

0x01 graphic

Przykład kod przykładu:

Private Sub CommandButton1_Click()
 
Dim NumerWiersza As Integer
 
Dim NumerKolumny As Integer
  NumerWiersza = 1
  NumerKolumny = 1
 
Do While Arkusz2.Cells(NumerWiersza, NumerKolumny).Value <> ""
  
If NumerWiersza >= 1000 Then
   
Exit Do
  
End If
  NumerWiersza = NumerWiersza + 1
 
Loop
  
If NumerWiersza >= 1000 Then
   MsgBox "Baza przepełniona, dane nie mogą być zapisane. Dokonaj archiwizacji"
  
Else
   Arkusz2.Cells(NumerWiersza, NumerKolumny).Value = Arkusz1.Range("A1").Value
   Arkusz2.Cells(NumerWiersza, NumerKolumny + 1).Value = Arkusz1.Range("B1").Value
   Arkusz2.Cells(NumerWiersza, NumerKolumny + 2).Value = Arkusz1.Range("C1").Value
   Arkusz1.Range("A1").Value = ""
   Arkusz1.Range("B1").Value = ""
   Arkusz1.Range("C1").Value = ""
   MsgBox "Dane zostały zapisane do Arkusza2"
 
End If
End Sub

0x01 graphic

Przykład opis przykładu:

W przykładzie po naciśnięciu (kliknięciu) przycisku polecenia (CommandButton1) zapisywane są dane z komórek A1, B1, i C1 Arkusza1 do odpowiednich komórek w Arkuszu2. Aby przetestować ten przykład wykonaj następujące czynności:

  • Uruchom Microsoft Excel.

  • Z menu Widok wybierz Paski narzędzi a następnie Przybornik formantów (jeżeli nie jest widoczny).

  • W Przyborniku formantów wyszukaj i kliknij na ikonę Przycisk polecenia a następnie miejsce w arkuszu gdzie chcesz go umieścić. Ikona Tryb projektowania w przyborniku powinna się uaktywnić.

  • Kliknij dwa razy lewym przyciskiem myszy na wstawiony przycisk (ikona Tryb projektowania w przyborniku powinna być aktywna). Powinien uruchomić się Edytor Visual Basic z widocznym oknem Kod programu (Code), w oknie tym zawarta powinna być deklaracja procedury Click naszego Przycisku polecenia.

  • W procedurze zdarzenia Click Przycisku polecenia wpisz odpowiedni kod:

  • Zamknij Edytor Visual Basic Alt+Q i powróć do arkusza Excela.

  • Następnie wyłącz tryb projektowania (jeżeli jest aktywny) klikając na ikonę Zakończ tryb projektowania w Przyborniku formantów.

  • Wprowadź jakieś wartości do komórek A1, B1, i C1 Arkusza1 i kliknij przycisk.

  • Przejdź do Arkusza2 i sprawdź czy dane zostały zapisane.

W kodzie przykładu zastosowaliśmy instrukcje Exit Do. Instrukcja ta w naszym przypadku spełnia dwa zadania. Pierwsze ogranicza ilość zapisanych wierszy aby nasza baza danych nie była zbyt rozbudowana. Drugie powoduje wyjście z pętli Do While...Loop gdyby z jakiegoś powodu nasza pętla miała być wykonywana w nieskończoność.

Jeszcze uwaga do przykładu. Kod ten w Arkuszu2 przeszukuje po kolei wiersze w określonej przez nas jednej kolumnie. Po natrafieniu na pustą komórkę w tej kolumnie zapisywane są dane do wiersza w którym jest ta komórka. Aby kod działał poprawnie komórka umieszczona w kolumnie którą przeszukuje kod powinna być za każdym razem zapisywana. Możemy tam umieszczać na przykład numer porządkowy czy datę zapisania.



Wyszukiwarka

Podobne podstrony:
VBA w Excel7, excel
VBA w Exce13, excel
VBA w Excelu, excel
VBA w Exce18, excel
VBA w Exce21, excel
VBA w Exce17, excel
VBA w Excel3, excel
VBA w Exce14, excel
VBA w Exce16, excel
VBA w Exce11, excel
VBA w Excel4, excel
VBA w Excel1, excel
VBA w Excel5, excel
VBA w Exce15, excel
VBA w Exce12, excel
VBA w Exce23, excel
VBA w Exce25, excel
VBA w Excel6, excel
VBA w Exce10, excel

więcej podobnych podstron