Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Elektroenergetyki Technologie informatyczne Microsoft Excel Ćw. 5
1. Wstęp 1.1. Wprowadzenie do języka VBA Zaimplementowany w MS Excel język programowania Visual Basic for Applications (VBA) to język makr umożliwiający bezpośrednie tworzenie programów strukturalnych (arkusz kalkulacyjny zawiera strukturalny język skryptowy). Język Basic (Beginner's All-purpose Symbolic Instruction Code - uniwersalny kod instrukcji symbolicznych dla początkujących) powstał na początku lat 60., natomiast największe uznanie zdobył w 1991 r., gdy Microsoft wprowadził do sprzedaży Visual Basic for Windows. Język VBA został użyty w pakiecie Microsoft Office po raz pierwszy w wersji 5. Zarówno w tej, jak i w kolejnej (Excel 95) moduł VBA był oddzielnym arkuszem w skoroszycie. Od wersji '97 język VBA dostępny jest w Visual Basic Editor (VBE). Aby przełączyć się do edytora należy nacisnąć kombinację klawiszy Alt+F11. Makra, które można stworzyć służą automatyzacji zadań i często ułatwiają pracę użytkownikowi. Aby uruchomić menadżer makr należy nacisnąć kombinację klawiszy ALT+F8. Umieszczenie kodu źródłowego w module VBA możliwe jest poprzez wprowadzenie kodu źródłowego w oknie VBA lub zarejestrowanie makra. Rejestrując makro Excel tworzy serie instrukcji, które są odzwierciedleniem wykonywanych działań. Wykonywane czynności są tłumaczone na instrukcje języka VBA. Wszystkie instrukcje składające się na dane makro nazywane są procedurą (każdą linię procedury nazywamy instrukcją, a każda instrukcja może być kolejną procedurą). 1.2. Wprowadzenie do dodatku SOLVER Solver to narzędzie służące do rozwiązywania zadań zawierających wiele zmiennych i warunków. Stosowany jest głównie w zadaniach związanych z optymalizacją, np. maksymalizacja zysków, minimalizacja kosztów, osiągnięcie konkretnej wartości. Narzędzie to może rozwiązywać trzy typy zagadnień: liniowe, nieliniowe oraz całkowitoliczbowe. W celu uaktywnienia dodatku Solver należy z menu Narzędzia wybrać Dodatki, zaznaczyć Solver i potwierdzić swój wybór klikając OK (w nowszej wersji programu: Menu Excel, Opcje programu Excel, Dodatki, Dodatki Programu Excel, Przejdź, zaznaczyć Solver i potwierdzić OK). Aby uruchomić dodatek Solver wybieramy
w menu Narzędzia opcję Solver (w nowszej wersji wstążka Dane, Solver). Okno Solvera składa się z następujących elementów: Komórka celu adres komórki celu, której wartość będzie optymalizowana, Równa określa cel optymalizacji: Maks (maksymalizacja danej wartości), Min (minimalizacja danej wartości), Wartość (osiągnięcie konkretnej wartości). Komórki zmieniane adresy komórek, których wartości Solver może zmieniać w celu osiągnięcia celu optymalizacji, Warunki ograniczające warunki, które Solver musi spełnić rozwiązując zadanie. Dodatkowo po wykonaniu obliczeń generowane są trzy rodzaje raportów: raport wyników, wrażliwości oraz granic. Należy pamiętać, iż na rozwiązanie zadania Solver ma standardowo 100 sekund i 100 iteracji. Po przekroczeniu tych wartości pojawi się okno z komunikatem. W celu zwiększenia czasu lub kroków iteracji należy posłużyć się przyciskiem Opcje w oknie dodatku Solver. Równie istotnym ograniczeniem jest wykorzystanie maksymalnie 200 komórek zmienianych. 2. Zadania laboratoryjne dotyczące języka VBA 2.1. Generowanie okna komunikatu Zadanie polega na wygenerowaniu okna komunikatu wyświetlanego użytkownikowi. Kod umożliwiający wyświetlenie okna informacyjnego wygląda następująco: Sub komunikat() tytuł = "Główna treść komunikatu przywitanie = "Witaj użytkowniku MsgBox tytuł, vb0konly + vbinformation, przywitanie End Sub Należy utworzyć przycisk, a następnie przypisać do niego makro, które będzie wyświetlało komunikat z imieniem i nazwiskiem studenta. Aby wstawić przycisk należy włączyć pasek Formularz klikając raz prawym klawiszem myszy obok paska narzędziowego w Excelu i wybrać Formularze (w nowszej wersji Excela należy nacisnąć na ikonę Office, Opcje programu Excel
i zaznaczyć Pokaż pasek Deweloper na Wstążce, a następnie przejść na zakładkę Deweloper i wybrać opcję Wstaw Formanty formularza), a następnie Przycisk. Po narysowaniu przycisku należy przypisać jego działaniu odpowiednie makro i zaproponować stosowny tytuł tegoż przycisku. 2.2. Kopiowanie Należy utworzyć skoroszyt, zamienić nazwę jednego z arkuszy na kopiowanie, zapisać, w komórkach od A1 do A4 wpisać kolejno liczby 1, 2, 3, 4, a następnie przejść do VBE i w arkuszu "Kopiowanie" wpisać następujący kod: Sub kopiowanie() Range("A1:A4 ).Select Selection.Copy Range("B1:B4 ).Select ActiveSheet.Paste Application.CutCopyMode=False End Sub Należy tak zmodyfikować kod, aby w kolumnie B1 znalazła się wartość z kolumny A4, w B2 z A3 itd. Podobnie jak w zadaniu 2.1 należy utworzyć przycisk włączający makro. 2.3. Funkcja kwadratowa Zadanie to polega na stworzeniu nowej Funkcji Użytkownika obliczającej wartość funkcji f(x) = ax^2 + bx + c, gdzie użytkownik sam definiuje współczynniki a, b, c oraz argument funkcji x. Dodatkowo do pól, w których użytkownik ma wpisać powyższe dane, należy przypisać nazwy komórek. Aby to wykonać, należy z menu Wstaw wybrać opcję Nazwa, Definiuj (w nowszej wersji Excela kliknąć na wstążce w zakładkę Formuły, Menadżer nazw). Proszę w ten sposób nazwać następujące pola: wsp_a, wsp_b, wsp_c, argument. Aby zaimplementować nową funkcję należy w VBE utworzyć do danego arkusza Moduł, a następnie wpisać następujący kod: Function kwadratowa(argument, wsp_a, wsp_b, wsp_c) kwadratowa = wsp_a * argument ^ 2 + wsp_b * argument + wsp_c End Function
Na podstawie powyższego kodu należy utworzyć nowy, który umożliwi użytkownikowi uzyskanie informacji o miejscach zerowych funkcji kwadratowej (po wpisaniu przez użytkownika współczynników a, b, c). Jeżeli Δ<0, wówczas należy (za pomocą funkcji JEŻELI) wyświetlić informację, iż rozwiązania nie należą do zbioru liczb rzeczywistych. Arkusz musi zawierać odpowiednie informacje tekstowe odnoszące się do konkretnych pól. Dodatkowo należy w sposób estetyczny dokonać formatowania tego arkusza (kolory, czcionki, wypełnienia). 2.4. Rysowanie wykresu funkcji Napisać procedurę, która w kolumnie A arkusza wyznaczy ciąg wartości od -5 do 5 z krokiem co 0,2, a następnie w kolumnie B wyznaczy dla tych argumentów wartości funkcji f(x) = x^2 1 i przedstawi wynikową funkcję na wykresie będącym osobnym arkuszem. Rozwiązanie tego zadania wygląda następująco: Sub wykres() ActiveCell.FormulaR1C1 = "-5" Selection.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, Step:=0.2, Stop:=5 ActiveCell.Offset(0, 1).Formula = "=a1^2-1" ActiveCell.Offset(0, 1).Copy Destination:=Range("b1:b51") Range("A1:B51").Select Range("B51").Activate Charts.Add ActiveChart.ChartWizard Source:=Sheets("Arkusz1").Range("A1:B51"), Gallery:=xlXYScatter, Format:=6, PlotBy:=xlColumns, CategoryLabels:=1, SeriesLabels:=0, HasLegend:=2, Title:="f(x)=x^2-1", CategoryTitle:="Argumenty", ValueTitle:="Wartości" End Sub Należy sprawdzić działanie kodu, a następnie zaproponować własny, rysujący wykres funkcji f(x) = log (x^2) + 2*sin(x) 3, której argumenty (przypisane do kolumny C) przyjmować będą wartości od -100 do 100 (wartości funkcji zapisać w kolumnie D) z krokiem co 0,5. Dodatkowo należy zmienić nazwę wykresu.
3. Zadanie dotyczące dodatku Solver 3.1. Komputery Firma X sprzedaje 3 typy komputerów. Cena komputera A wynosi 1000 zł, B - 1500 zł, C 2000 zł. Przygotowanie komputera A zajmuje pracownikowi 1 godzinę, B 2 godziny, C 3 godziny. Do komputera A pracownik instaluje 1 kość pamięci, B 4, C 6. Koszty poniesione na montaż komputera A to 500 zł, B 800 zł, C 1100 zł. Jak zoptymalizować produkcję komputerów, przyjmując za kryterium maksymalizacje dochodów ze sprzedaży komputerów. Ograniczenia to: czas montażu nie może przekroczyć 352 godzin, w zapasie jest 250 kości pamięci, w magazynie jest miejsce na maksymalnie 100 komputerów, firma X musi zrealizować zaległe zamówienie na 6 komputerów A i 8 komputerów C. Wykorzystać dodatek Solver. 3.2. Wielomian Dany jest wielomian f(x) = 4x 3 + 5x 2 + x. Za pomocą dodatku Solver należy (dla dziedziny argumentów funkcji < -2, 2 >) wyznaczyć wartość maksymalną oraz minimalną funkcji (wartości należy zapisać w osobnych komórkach), a następnie wyznaczyć argument funkcji, dla którego wielomian osiąga wartość -0,054 (z dokładnością do 4 miejsca po przecinku). 4. Literatura źródłowa 4.1. BizTech Edukacja: Microsoft Excel. 4.2. Helion: Excel 2003 PL Programowanie w VBA Vademecum profesjonalisty 5. Pytania kontrolne 5.1. Czym jest i jak można utworzyć w Excelu makro? 5.2. Do czego służy i jakimi ograniczeniami charakteryzuje się narzędzie Solver? 5.3. W jaki sposób można w programie Excel wstawić przycisk? 5.4. Czym rozpoczyna się i kończy procedura w VBA? 5.5. Czym w narzędziu Solver różni się komórka celu od komórki zmienianej?