Zastosowanie Informatyki w Finansach i Bankowości II
Wykorzystanie Microsoft Excel i Visual Basic for Applications w tworzeniu arkuszy stanowiących źródło
danych dla dokumentów seryjnych.
1. Aby arkusz kalkulacyjny stanowił odpowiednie źródło danych dla dokumentów seryjnych w MS Word, dane
powinny być umieszczone w prawidłowy sposób. W pierwszym wierszu powinny znaleźć się tytuły kolumn
zawierających dane dokumentów seryjnych. Nadane tytułu będą jednocześnie stanowiły nazwy pól w
korespondencji seryjnej. Ponadto arkusz powinno się wyposażyć w komórkę zliczającą ilość kontaktów. W tym
celu można wykorzystać funkcję =ile.niepustych dla jednej z kolumn. Formuła komórki dla kolumny B będzie
wyglądała następująco =ile.niepustych(B:B) – 1 gdzie B:B oznacza całą kolumnę B a – 1 pomija pierwszy wiersz,
w którym zawarte są tytuły kolumn.
2. Kolejnym etapem będzie dodanie okna dialogowego i wyposażenie go w odpowiednie elementy pozwalające na
wprowadzanie danych. W celu utworzenia własnego okna dialogowego należy otworzyć edytor VBA i wybrać
opcję INSERT/USERFORM z menu głównego edytora. Po wybraniu opcji wyświetli się nowy pasek narzędzi
„TOOLBOX” oraz puste okienko dialogowe o nazwie Userform1.
3. Aby okienko dialogowe mogło być użyte dla obsługi procesu wprowadzania danych do utworzonej wcześniej
tabeli powinno się je wyposażyć w dodatkowe elementy pozwalające na wprowadzanie i manipulowanie danymi.
Tymi elementami będą pola tekstowe (TEXTBOX). Ponadto powinno się użyć dodatkowo elementów „Label” czyli
etykiet w celu opisania pól tekstowych.
4. Tabela zawiera 7 kolumn danych, a więc każdy rekord tabeli będzie się składał z 7 elementów składowych.
Dlatego utworzone wcześniej okno dialogowe powinno zostać wyposażone w 7 elementów typu „TEXTBOX” oraz
7 etykiet. Etykiety powinny być tożsame z tytułami kolumn tabeli natomiast pola tekstowe powinny otrzymać
nazwy, którymi później łatwo się będzie posługiwać przy tworzeniu makra. Nadawanie nazw obiektom typu
„FORM” odbywa się poprzez wykorzystanie okna dialogowego „PROPERTIES” w edytorze VBA. Aby utworzonemu
elementowi nadać nazwę należy wybrać dany element lewy klawiszem mysz a następnie w oknie „Properties”
zmienić pole „(Name)” . Ponieważ każdy rekord składa się z siedmiu elementów, można utworzonym polom
tekstowym nadać nazwy zgodne z numerami kolumn, które będą wypełniać. Np. d_1 , d_2 , d_3 , d_4 , d_5 ,
d_6 , d_ 7.
5. Aby okienko dialogowe było w pełni funkcjonalne można dodać dwa przyciski „CommandButton”. Odpowiednie
elementy znajdziemy jak wcześniej w pasku „TOOLBOX”. Po dodaniu powinno się zmienić ich wewnętrzne
etykiety w okienku „PROPERTIES” poprzez zmianę pól „CAPTION”. Jeden z przycisków powinien służyć do
dopisywania kolejnych rekordów tabeli (nazwa – „DOPISZ”) a drugi do zamykania okna dialogowego
(„ZAMKNIJ”). Na samym końcu można zmienić nazwę okna dialogowego oraz komunikat w pasku okienka czyli
właściwości (Name) oraz Caption na odpowiednio Panel i DOPISZ KONTAKT
6. Po przygotowaniu okna dialogowego powinniśmy poleceniem INSERT/MODULE z menu głównego edytora VBA
dodać element MODULE zwierający makra. Pierwsze makro powinno zajmować się pokazywaniem utworzonego
przez nas okna dialogowego z poziomu arkusza:
Sub PokazPanel()
Panel.Show
End Sub
TEXTBOX
CAPTION
COMMAND
BUTTON
LABEL
7. Aby zapewnić łatwe uruchamianie okienka dialogowego z poziomu arkusza należy dodać przycisk z grupy
„Formularze” oraz przypisać mu makro „PokazPanel”.
8. Po wykonaniu poprawnie wszystkich wyżej wymienionych czynności, po naciśnięciu przycisku z poziomu arkusza
powinno pokazać się utworzone okno dialogowe. Można je na tym etapie zamknąć jedynie krzyżykiem.
Zamykanie okna przyciskiem „Zamknij” będzie możliwe po przypisaniu odpowiedniego makra przyciskowi. W tym
celu należy powrócić do edytora VBA i w okienku VBA Project uruchomić oknodialogowe dwukrotnym kliknięciem
z folderu Forms. Następnie dwukrotnie kliknąć na przycisku mającym odpowiadać za zamykanie okna
dialogowego.
9. Pojawi się okno zawierające prywatne makra okna dialogowego oraz następujące sformułowanie
Private Sub CommandButton2_Click()
End Sub
10. W wolnym miejscu należy wpisać makro umożliwiające zamykanie okna dialogowego.
Private Sub CommandButton2_Click()
Unload Panel
End Sub
*Jeżeli po poleceniu Unload użyjemy zamiast nazwy okna dialogowego sformułowania Me, to makro będzie zamykało bieżące aktywne okno
dialogowe.
11. Pozostaje jedynie utworzenie ostatniego makra dla przycisku DOPISZ. Jeżeli w edytorze dowolne sformułowanie
poprzedzimy znakiem ‘ to będzie ono traktowane jako informacja.
Private Sub CommandButton1_Click()
' Dynamiczna ilość danych powoduje konieczność pobrania z arkusza długości tabeli
' nn - liczba kontaktow w skrzynce kontaktowej
nn = Range("ILOSC").Value + 1
' warunek jest potrzebny by uruchamiac poszczegolne akcje. Jezeli warunek
' bedzie rowny zero zostanie dopisana kolejna pozycja. Jezeli dane beda niekompletne warunek
' otrzyma wartosc 1 i makro zostanie automatycznie przerwane poniewaz dalsza jego czesc będzie
' uruchamiana tylko w przypadku gdy warunek = 0
' ponizsze sformulowanie ustawia domyslna wartosc warunku
Warunek = 0
' ponizej sformulowano odpowiedni test logiczny, ktory spowoduje warunek = 1
If d_1 = "" Or d_2 = "" Or d_3 = "" Or d_4 = "" Or d_5 = "" Or d_6 = "" Or d_7 = "" Then Warunek = 1
' Reakcja okienkiem informacyjnym na warunek = 1
If Warunek = 1 Then MsgBox "WYPELNIJ WSZYSTKIE POLA"
' Jezeli wszystkie pola sa wypelnione
If Warunek = 0 Then
' uruchomiona zostanie tzw. petla czyli n = 1, n= 2, n= 3 az do wartosci nn
' dla przykladu jezeli w ksiazce sa 4 kontakty to dlugosc tabeli a zarazem parametr nn
' sa rowne 5 i wtedy petla zostanie wykonana dla n z przedzialu <1,5>
' dla kolumny liczba porządkowa petla zwroci aktualne n a dla kolejnych kolumn wartosci odpowiednich
' pol tekstowych okna dialogowego
For n = 1 To nn
'numer wiersza w komendzie Cells() zostal wprowadzony jako n + 1 aby zawsze petla znalazla
'pierwszy pusty wiersz tabeli i tam wpisala wartosci pol tekstowych do odpowiednich pol rekordu
If Cells(n + 1, 1).Value = "" Then
Cells(n + 1, 1).Value = n
Cells(n + 1, 2).Value = d_1
Cells(n + 1, 3).Value = d_2
Cells(n + 1, 4).Value = d_3
Cells(n + 1, 5).Value = d_4
Cells(n + 1, 6).Value = d_5
Cells(n + 1, 7).Value = d_6
Cells(n + 1, 8).Value = d_7
End If
Next n
End If
End Sub