background image

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 

background image

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 

background image

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