POWRÓT

SEMESTR VI

Praca z obiektami i kolekcjami


Spis treści rozdziału - tutaj kliknij

Przetwarzanie obiektów
Konstrukcja With ...End With
Konstrukcja For Each ...Next

Źródła - Excel 2013 Pl, Programowanie VBA - John Walkenbach, VBA dla Excela 2010 Pl - Witold Wrotek, Excel 2013 Pl, programowanie w VBA dla Bystrzaków.


 

Przetwarzanie obiektów

     
   

  

      

Do góry


 

Konstrukcja With ...End With

     
   

  Konstrukcja oparta na poleceniach With i End With umożliwia wykonywanie wielu operacji na pojedyńczym obiekcie. Aby zrozumieć zasady działania konstrukcji With ...End With, przetestujmy dwie procedury, które modyfikują wartość pięciu właściwości związanych z formatowaniem zaznaczonego obszaru.

Sub ChangeFont ()
  Selection.Font.Name = "Cambria"
  Selection.Font.Bold = True
  Selection.Font.Italic = True
  Selection.Font.Size = 12
  Selection.Font.Underline = xlUnderlineStyleSingle
  Selection.Font.ThemeColor = xlThemeColorAccent1
End Sub


Sub ChangeFont ()
  With Selection.Font
  .Name = "Cambria"
  .Bold = True
  .Italic = True
  .Size = 12
  .Underline = xlUnderlineStyleSingle
  .ThemeColor = xlThemeColorAccent1
  End With
End Sub

Porównując obie procedury, okazuje się, że zastosowanie konstrukcji With ...End With zwiększa szybkość, a to oznacza, że znacznie szybciej modyfikuje wartości.

Do góry


 

Konstrukcja For Each ...Next

     
   

  Konstrukcja For Each działa na kolekcji (zbiorze) danych. Typowym zastosowaniem konstrukcji For Each ...Next jest przetwarzanie wszystkich komórek z danego zakresu, a jej działanie sprowadza się do powtarzania operacji dla każdego elementu kolekcji obiektów, lub dla każdego elementu tablicy. Jest ona szczególnie przydatna, jeżeli nie znamy liczby elemenów kolekcji (tablicy). Ogromną jej zaletą jest brak konieczności deklarowania warunków oraz liczników. Składnia fonstrukcji For Each ...Next jest następująca;

For Each element In grupa
  [Instrukcje]
  [Exit For]
  [Instrukcje]
Next [element]

Przykłady konstrukcji For Each

Option Explicit
Dim komórka As Variant
Sub szukacz()
   For Each komórka In Worksheets("Arkusz1").Range("A1:E5")
   If IsNumeric(komórka.Value) = True Then
    If komórka.Value = 0 Then
    komórka.Value = "zero"
   End If
   End If
  Next
End Sub


Powyższy przykład umożliwia nam przeszukanie komórek z zakresu od A1 do E5 arkusza Excela o nazwie Arkusz1. Przeszukanie odbywa się za pomocą konstrukcji For Each. W komórkach o wartościach równych "0" wpisywane będzie słowo zero.
Tutaj do pobrania i przetestowania działający program »»» 

Do góry


 

 (C) 2011 - 2018 Wydział Przyrodniczo - Techniczny KPSW. All Rights Reserved