POWRÓT

SEMESTR VI

Techniki programowania w VBA


Spis treści rozdziału - tutaj kliknij

Przetwarzanie zakresów
Przetwarzanie skoroszytów i arkuszy
Techniki programowania

Ź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 zakresów - wybór

     
   

  Jednym z najważniejszych działań wykonywanych w Excelu jest nawigowanie po arkuszach. Najczęściej powtarzanymi czynnościami są; przechodzenie do odpowiednich zakresów, odnajdowanie ostatniego wiersza, przechodzenie do ostatniej kolumny, ukrywanie i odkrywanie zakresów, itp.
  Najczęściej wykonywaną operacją w Excelu jest czynność przetwarzania zakresów komórek, a w tym;

  • kopiowanie zakresów,
  • kopiowanie zakresów o zmiennej wielkości,
  • zaznaczanie komórek do końca wiersza lub kolumny,
  • zaznaczanie całego wiersza lub całej kolumny,
  • przenoszenie zakresów,
  • przetwarzanie komórek zaznaczonego zakresu przy użyciu pętli.

Kopiowanie

  Kopiowanie to najczęściej wykonywana operacja w Excelu. Niżej przykład kodu makra zapisanego przez rejestrator makr, dla operacji kopiowania komórek o adresie B2:B5 do zakresu D2:D5.

Sub kopiowanie()
'
' kopiowanie Makro
  Range("B2:B5").Select
  Selection.Copy
  Range("D2:D5").Select
  ActiveSheet.Paste
End Sub

Przedstwione wyżej makro działa poprawnie, ale okazuje się, że zakresy komórek można kopiować w znacznie bardziej efektywny sposób. Do tego celu można wykorzystać procedurę, która składa się z jednego wiersza polecenia i nie zaznacza żadnych komórek.

Sub CopyRange2()
  Range("B2:B5").Copy Range("D2")
End Sub

Kopiowanie zakresów o zmiennej wielkości

  Kopiowanie zakresów o zmiennej wielkości ma zastosowanie wtedy, gdy konieczne jest skopiowanie zakresu komórek, dla którego dokładna liczba wierszy i kolumn określających jego wielkość nie jest z góry znana. Przykładem może być czynność przeniesienia danych z jednego arkusza do drugiego arkusza. Przykład takiego działania przedstawia poniższa procedura.

Sub CopyCurrentRegion()
  Range("A1").CurrentRegion.Copy
  Sheets("Lokal2").Select
  Range("A1").Select
  ActiveSheet.Paste
  Sheets("Lokal1").Select
  Application.CutCopyMode = False
End Sub


Tutaj do pobrania i przetestowania procedura. Modyfikuj i sprawdzaj działanie programu, dokonując zmian w kodzie procedury. »»» 

  W tym przypadku makro wykorzystuje właściwość CurrentRegion, która zwraca obiekt Range odpowiadający blokowi komórek otaczających określoną komórkę, w tym przypadku o adresie A1.

Zaznaczanie całego wiersza lub całej kolumny

  W poprzednim przykładzie makro umożliwiało nam zaznaczanie całego bloku komórek, do czego była wykorzystana wlaściwość CurrentRegion. Ale nie tylko z takiego sposobu zaznaczania komórek możemy skorzystać. VBA pozwala nam również na zaznaczanie zakresu komórek, począwszy od bieżącej aktywnej komórki w dół kolumny, aż do komórki znajdującej się o jeden wiersz powyżej pierwszej pustej komórki lub kolumny. Po zaznaczeniu zakresu można go przetwarzać go w dowolny sposób - kopiować komórki, przenosić je w inne miejsce arkusza, zmieniać formatowanie i tak dalej. Przykład takiej procedury.

Sub SelectDown()
  Range(ActiveCell, ActiveCell.End(xlDown)).Select
End Sub


Tutaj do pobrania i przetestowania procedura. Modyfikuj i sprawdzaj działanie programu, dokonując zmian w kodzie procedury. »»» 

  W przykładzie wykorzystana została metoda End obiektu ActiveCell, która zwraca obiekt typu Range. Metoda End pobiera jeden argument określający kierunek, w którym zostanie wykonane zaznaczenie. Argumentami tej metody są; xlUp, xlDown, xlToLeft, xlToRight

  Z podobnych zagadnień zasługują na uwagę następujące rozwiazania makr, które umożliwiają;

  • wprowadzanie wartości do komórki,
  • wprowadzanie wartości do następnej pustej komórki,
  • wstrzymanie działanie makra w celu umożliwienia pobrania zakresu wyznaczonego przez użytkownika,
  • zliczanie zaznaczonych komórek,
  • określanie typy zaznaczonego zakresu,
  • usuwanie wszystkich pustych wierszy,
  • powielanie wierszy,
  • określanie, czy zakres zawiera się w innym zakresie,
  • określanie, czy zakres zawiera się w innym zakresie,
  • określanie typu danych zawartych w komórce,
  • odczytywanie i zapisywanie zakresów,
  • przenoszenie zawartości tablic jednowymiarowych,
  • zaznaczanie komórek na podstawie wartości,
  • kopiowanie nieciągłego zakresu komórek.

Do góry


 

Przetwarzanie skoroszytów i arkuszy

     
   

  Przetwarzanie skoroszytów i arkuszy obejmuje wykonywanie takich czynności jak;

  • zapisywanie wszystkich skoroszytów,
  • zapisywanie i zamykanie wszystkich skoroszytów,
  • ukrywanie wszystkich komórek arkusza poza zaznaczonym zakresem,
  • tworzenie spisu treści zawierającego hiperłącza,
  • synchronizowanie arkuszy.

Przykłady makr przetwarzające skoroszyty i arkusze znajdziesz w książce Excel 2013 Pl, Programowanie VBA - John Walkenbach.

Skorosztyt z nazwami lokali.

Sub CreateTOC()
  Dim i As Integer
  Sheets.Add Before:=Sheets(1)
  For i = 2 To Worksheets.Count
  ActiveSheet.Hyperlinks.Add _
    Anchor:=Cells(i, 1), _
    Address:="", _
    SubAddress:="'" & Worksheets(i).Name & "'!A1", _
    TextToDisplay:=Worksheets(i).Name
  Next i End Sub


Tutaj do pobrania i przetestowania makro tworzące spis treści zawierający hiperłącza. Modyfikuj i sprawdzaj działanie programu, dokonując zmian w kodzie. »»» 

Do góry


 

Techniki programowania

     
   

  W tej części kolejne przykłady technik programowania w języku VBA, które w niektórych sytuacjach można zaadoptować we własnych projektach. Najczęściej używanymi technikami programowania w języku VBA są;

  • przełączanie wartości właściwości typu logicznego,
  • wyświetlanie daty i czasu,
  • wyświetlanie czasu w formie przyjaznej dla użytkownika,
  • pobieranie listy czcionek,
  • sortowanie tablicy,
  • przetwarzanie grupy plików.

Przykłady makr przetwarzające skoroszyty i arkusze znajdziesz w książce Excel 2013 Pl, Programowanie VBA - John Walkenbach.

Do góry


 

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