Tworzenie formularzy za pomocą edytora Word 2007.Pierwszym krokiem jest przygotowanie edytora, gdyż domyślnie narzędzie tworzenia formularzy jest niewidoczne. Klikamy przycisk Microsoft Office w lewym górnym rogu i z menu, które się rozwinęło wybieramy Opcje programu Word. Na zakładce Popularne zaznaczamy opcję Pokaż kartę Deweloper na Wstążce i zamykamy okno przyciskiem OK. Widzimy, że istotnie na wstędze programu pojawiła się nowa karta. Klikamy ją. Znajduje się na niej kilka grup - używać będziemy tylko dwóch: Formanty oraz Ochrona. Kolejnym krokiem jest otworzenie szablonu lub dokumentu, na którym ma zostać oparty formularz. Klikamy ponownie przycisk Microsoft Office i Nowy. W kolumnie Szablony wybieramy Moje szablony. W następnym oknie zaznaczamy Normal i potwierdzamy wybór przyciskiem OK. Musimy teraz zapisać pracę, którą tworzymy. W tym celu używamy Zapisz jako z menu, które rozwinie się po kliknięciu na przycisk Microsoft Office, a następnie Dokument programu Word lub Szablon programu Word. Wybieramy nazwę pliku i miejsce, gdzie chcemy zapisać plik i wciskamy Zapisz. Ostatnim krokiem jest stworzenie tabeli, która będzie bardzo pomocna w organizacji i zachowaniu przejrzystości formularza. Przełączamy się na zakładkę Wstawianie na wstędze, następnie w bloku Tabele klikamy narzędzie Tabela i wybieramy ilość jej rzędów i kolumn. Ten krok możemy oczywiście pominąć, możemy go również wykonać na końcu, jeśli jeszcze nie wiemy ile pól będzie miał formularz. Wystarczy po skończeniu pracy stworzyć odpowiednią tabelę i przesunąć elementy do jej odpowiednich pól. Tworzenie formularza - opis formantów
Możemy już przystąpić do pracy. Przyjrzyjmy się grupie Formanty. Pierwsze dwa przyciski, czyli RTF oraz Tekst pozwalają wstawić pole tekstowe, w którym możemy prosić respondentów, aby wpisali na przykład swoje imię i nazwisko. Formant RTF domyślnie zezwala na wprowadzenie wielu linii, podczas gdy w zwykłym polu tekstowym piszemy tylko w jednej. W pierwszym przypadku nie możemy tego jednak zmienić, natomiast Tekst może pozwalać na użycie wielu linii. Aby to umożliwić zaznaczamy go i klikamy Właściwości w grupie Formanty, a następnie w obszarze Właściwości zwykłego tekstu zaznaczamy opcję Zezwalaj na powroty karetki (wiele akapitów). Zmianę zatwierdzamy przyciskiem OK. Główna różnica pomiędzy polem RTF a Tekst polega jednak na reakcji na formatowanie tekstu. Pierwsze pozwala na pogrubienie czy pochylenie części jego zawartości, podczas gdy w drugim taka zmiana będzie miała wpływ na całą treść w nim wprowadzoną. W przypadku wklejenia wcześniej przygotowanego tekstu formant RTF zachowa jego dokładny wygląd, natomiast w polu Tekst zostanie on sformatowany do takiej postaci, jak pierwszy znak. Pod kolejnym przyciskiem dostępny jest Formant zawartości w formie obrazu. Jak wskazuje nazwa, pozwala on ankietowanej osobie wybrać ze swojego dysku twardego obraz w jednym z wielu popularnych formatów graficznych i wstawić go do formularza. Dwa następne przyciski Pole kombi i Lista rozwijana umożliwiają dodanie rozwijanej listy wyboru. Aby wprowadzić elementy do wyboru zaznaczamy stworzony formant i w grupie Formanty wybieramy Właściwości. Następnie w obszarze Właściwości listy rozwijanej klikamy Dodaj i w polu Nazwa wyświetlana wpisujemy opcję do wyboru z listy, natomiast Wartość zostaje automatycznie uzupełnione tą samą nazwą, możemy jednak odpowiednim alternatywom przypisać dowolne wartości. Jeżeli przypadkiem wprowadzimy dwie opcje o tej samej etykiecie bądź wartości, program Microsoft Office Word 2007 zaprotestuje, informując o pomyłce. Po wpisaniu wszystkich możliwości wyboru zamykamy okno klikając OK.
Tworzenie formularzy w programie excel
Nazwa komponentu przechowywana jest w polu (Name) - ujrzymy je u góry listy zawartej w oknie Properties. Jeśli skopiujemy utworzony przed chwilą komponent, zauważymy, że Excel automatycznie zmienił nazwę nowej kontrolki. Dzieje się tak, gdyż nazwa komponentu musi być unikatowa - w obrębie skoroszytu nie możemy umieścić dwóch obiektów o tych samych nazwach. Zaczynamy programować: widok okna Properties, ułatwiającego kontrolę nad formantami, ucieszy zapewne każdego programistę.
Utwórzmy zatem odpowiednią liczbę pól kombi (w naszym przykładowym arkuszu będzie to dziesięć obiektów o nazwach od ComboBox1 do ComboBox10). Posłużą one do wyboru stawki VAT dla danego produtku. Możemy skorzystać z pliku Faktura2.xls z CHIP- -CD. Umieszczeniem na listach odpowiednich wartości zajmie się program, który za chwilę napiszemy.
Przechodzimy do edytora VBA (Narzędzia | Makro | Edytor Visual Basic lub skrót [Alt]+[F11]). W oknie projektu, standardowo umieszczonym po lewej stronie ekranu, klikamy dwa razy gałąź VBAProjectMicrosoft Excel Objects ThisWorkbook. Spowoduje to otwarcie okienka edycyjnego. Jest ono wyposażone w dwie listy rozwijalne (w miejscu menu). Wybieramy z lewej pozycję Workbook, z prawej - Open. Dzięki temu będziemy mogli utworzyć procedurę o nazwie Workbook_open, wykonywaną automatycznie podczas otwierania skoroszytu. Dzięki niej dodamy kolejne pozycje do list ComboBox.
Aby wstawić łańcuch znakowy do listy, musimy wskazać pełną nazwę obiektu i odpowiedniej, skojarzonej z nim procedury (tzw. metody). Możemy to zrobić np. tak:
Worksheets("faktura"). _
ComboBox1.AddItem "22%"
Instrukcja taka oznacza to, że w arkuszu o nazwie faktura znajduje się obiekt ComboBox1 (pierwszy z utworzonych przez nas komponentów typu ActiveX). Obiekt typu ComboBox oferuje z kolei metodę AddItem, dodającą do listy dowolny tekst (w naszym przypadku "22%").
Uwaga: znak podkreślenia "_" oznacza w języku Visual Basic przeniesienie wiersza. W podawanych w niniejszym artykule listingach można go usuwać, wpisując w zamian odpowiednie polecenia w jednej linii. W podobny sposób musimy dodać pozostałe pozycje odnoszące się do podatku VAT, a więc "7%", "0%" i "zwolniony". Operację powinniśmy powtórzyć dla wszystkich list. Daje to co najmniej 40 linii kodu. Postaramy się nieco zredukować rozmiar programu.
Po pierwsze, zastosujemy powtórzoną 10 razy (dla każdego formantu ComboBox) pętlę For... Next. Pozwala ona na cykliczne wykonywanie umieszczonych wewnątrz niej instrukcji. Poza tym nieco inaczej niż we wcześniejszym przykładzie "dobierzemy się" do naszych list rozwijalnych. Zrobimy to mianowicie, korzystając z obiektu OLEObjects, reprezentującego zbiór wszystkich formantów ActiveX umieszczonych w danym arkuszu. Aby uzyskać dostęp np. do kontrolki ComboBox5, wystarczy użyć polecenia OLEObjects("ComboBox5"). Nasz program może wyglądać tak, jak na poniższym wydruku:
Private Sub Workbook_Open()
Dim i
With Worksheets("faktura")
For i = 1 To.OLEObjects.Count
.OLEObjects("ComboBox" + _
CStr(i)).Object.AddItem "22%"
.OLEObjects("ComboBox" + _
CStr(i)).Object.AddItem '7%'
.OLEObjects("ComboBox" + _
CStr(i)).Object.AddItem "0%"
.OLEObjects("ComboBox" + _
CStr(i)).Object.AddItem "zw."
Next i
End With
End Sub
Po uzupełnieniu treści procedury możemy zapisać i zamknąć nasz arkusz (na tym etapie można skorzystać z pliku formularz3.xls z płyty CD). Po ponownym otwarciu dokumentu włączamy obsługę makropoleceń kliknięciem przycisku Włącz makra w wyświetlonym przez Excel oknie dialogowym. Przekonamy się, że wszystkie listy rozwijalne w kolumnie arkusza o nazwie Stawka VAT zawierają odpowiednie wpisy. Sumowanie i zliczanie
Zajmiemy się teraz obliczaniem cen, stawek VAT i wyliczeniem wartości, na jaką będzie opiewać faktura. Na początek wróćmy do trybu projektu formularza (przycisk Tryb projektowania na pasku Przybornik formantów). Gotowy formularz faktury możemy wzbogacić dowolnymi elementami. Dobrym pomysłem będzie np. dodanie list z oferowanym asortymentem.
Liczby w kolumnie Wartość netto faktury wyliczymy, posługując się prostą formułą. W naszym przykładowym arkuszu wpisujemy do komórki G17 formułę: =E17*F17 i kopiujemy ją do pozostałych komórek kolumny Wartość netto.
Nieco inaczej wyliczymy wartości w kolumnie Podatek. Będą one zależały od tego, co wybierzemy z list rozwijalnych w szpalcie Stawka VAT. Wartości podatku możemy wyliczyć na kilka sposobów. Jeden z łatwiejszych to utworzenie procedury obsługi zdarzenia Change każdej z list. Brzmi to nieco groźnie, postaram się jednak wyjaśnić to w miarę przystępnie.
Każdy komponent typu ActiveX generuje zestaw tzw. zdarzeń. Mają one miejsce, gdy np. wybierzemy coś z listy, wciśniemy lub puścimy przycisk myszy w obrębie kontrolki. Możemy obsłużyć każdą z takich typowych sytuacji w wybrany przez siebie sposób. Robimy to, tworząc procedurę o odpowiedniej nazwie. Podprogram ten zostanie wykonany w momencie, gdy wystąpi dane zdarzenie.
W naszym przypadku chodzi o proste zdarzenie Change, generowane w momencie wyboru pozycji z listy wybieralnej lub wpisania do niej tekstu.
Ponieważ nie zawsze wiemy, czy użytkownik arkusza najpierw wpisze cenę produktu czy też wybierze stawkę VAT, nie możemy wyliczyć ceny brutto w momencie wyboru pozycji z listy rozwijalnej. Zamiast tego zapiszemy informację o wybranej z listy wartości w ukrytej komórce arkusza. Aby utworzyć stosowną procedurę, klikamy dwukrotnie (będąc w trybie projektu) pierwszą z naszych list. Spowoduje to automatyczne przejście do edytora VBA i wygenerowanie nagłówków procedury ComboBox1_Change. Wpisujemy w niej tekst:
Select Case ComboBox1.Value
Case "22%"
Range("K17").Value = 0.22
Case "7%"
Range("K17").Value = 0.07
Case "%", "zw."
Range("K17").Value = 0
End Select
Opis instrukcji Case można znaleźć w Pomocy edytora VBA. Mówiąc w skrócie, pozwala ona na podjęcie określonych działań w zależności od wartości parametru (w naszym przypadku zawartości listy). Poszczególne fragmenty procedury skutkują wpisaniem odpowiedniej stawki podatku do pomocniczej komórki K17 (Range("K17"). Value =...). Podobną operację wykonujemy w odniesieniu do pozostałych list ComboBox. Kolejną czynnością jest umieszczenie w kolumnie Podatek formuł typu: =G17*K17. Arkusz po tych zmianach można skopiować z płyty CD (faktura4.xls).