background image

 

1

Visual Basic dla MS Word 

i MS Excel

background image

 

2

Język Visual Basic

• Kiedy używamy makr?:

– Trudne operacje (ktoś za nas rozwiązał 

problem), 

– Często wykonywane operacje. 

• Spotyka się wersje języka VB dla:

– Microsoft Word (rzadko stosowane makra, bo 

za bardzo indywidualna praca z tekstem), 

– Microsoft Excel (częściej, bo struktury danych 

są jednolite w całym arkuszu), 

– Microsoft Access (do organizacji zarządzania 

bazą danych). 

background image

 

3

Tworzenie makr

• Przechodzimy do 

menu:

– NARZĘDZIA

• MAKRO

– ZAREJESTRUJ 

NOWE MAKRO

background image

 

4

Tworzenie makr - cd

• W okienku 

pokazanym obok 
możemy przypisać 
makro do skrótu 
klawiaturowego 
lub do paska 
narzędzi.

background image

 

5

Tworzenie makr - cd

• Jeśli wybierzemy klawiaturę, to pojawia 

się okno pokazane na rys. obok.

• W tym okienku możemy dostosować nasze 

ustawienia

background image

 

6

Tworzenie makr - cd

• Zatrzymanie rejestrowania jest 

możliwe po kliknięciu przycisku 
„Zatrzymaj rejestrowanie”

• Można w dowolnym momencie 

wstrzymać rejestrowanie.

background image

 

7

Zmiana ustawień makra 

• Makro działa tylko w obrębie pliku w którym jest zapisane. Aby 

makro było widoczne z każdego pliku w Wordzie należy zapisać 
je w szablonie Normal.dot. 

• Jednak należy unikać zmianami w tym pliku, jeśli już, to należy 

zrobić kopię tego pliku.  

• Przykładowe makro zmienia wszystkie parametry naszego 

tekstu. Jeśli chcieli aby makro np. tylko pogrubiało i zmieniało na 
kursywę bez zmiany wielkości liter. Wyobraźmy sobie dokument 
z tekstem źródłowym który ma być zapisany kursywą pierwsza 
część tego tekstu jest napisana Arialem a druga inną czcionką. 

• Aby dokonać zmian  przechodzimy do edytora VBA, który 

umożliwia pełną kontrolę nad naszymi makrami. Aby się tam 
dostać naciskamy Alt+[F11] lub w menu -narzędzia- wybieramy 
-makro- edytor -Visual Basic-. 

• Uruchomiona aplikacja jest częścią pakietu Office. 

background image

 

8

Zmiana ustawień makra

• Załóżmy, że chcemy aby teksty, z których 

często korzystamy miały rozmiar 10 
punktów oraz były pisane kursywą.

• W tym celu uruchamiamy rejestrowanie 

makra. Następnie określmy  parametry 
czcionki menu -format- i -czcionka- teraz 
zmieńmy wielkość a następnie, format 
czcionki na kursywę. Teraz można już 
przycisnąć przycisk Stop. 

• Zostało utworzone makro, jego tekst jest 

pokazany na następnym slajdzie. 

background image

 

9

Przykładowe makro

Sub Makro1() 
' Makro1
' zmiana formatowania tekstu
 With Selection

.Font .Name = "Times New 

Roman" 

.Size = 10 
.Bold = False 
.Italic = True 
.Underline = wdUnderlineNone 
.StrikeThrough = False 
.DoubleStrikeThrough = False 

.Shadow = False 
.Hidden = False 
.SmallCaps = False 
.ColorIndex = wdAuto 
.Superscript = False 
.Subscript = False 
.Spacing = 0 
.Scaling = 100 
.Position = 0 
.Animation = 
wdAnimationNone 
End With 

End Sub 

background image

 

10

Makropolecenia w Excel

• Makropolecenie to spis czynności do 

wykonania w arkuszu Excela – mogą to być 
wpisywane dane, wzory, formatowanie i inne 
operacje. Tworzy się je, aby zautomatyzować 
często wykonywane sekwencje operacji. 
Makropolecenia zapisane są w języku Visual 
Basic. 

• Często, jeśli chcemy się dowiedzieć, jak brzmi 

polecenie Visual Basic’a odpowiadające 
operacjom na arkuszu, można stworzyć 
proste makro i je obejrzeć.

background image

 

11

Nagrywanie makra

• Podobnie jak dla Wrod’a

background image

 

12

Oglądanie makra

• Aby obejrzeć i zmienić treść 

makropolecenia należy wybrać z menu: 
Narzędzia, Makro, Edytor Visual Basic 
lub wcisnąć kombinację klawiszy Alt-F11

• W edytorze Visual Basica po lewej stronie 

powinien znajdować się Explorator 
Projektu, a po prawej obiekt, z którym w 
danym momencie pracujemy, pokazuje to 
rysunek na następnym slajdzie

background image

 

13

Okno edytora makr

background image

 

14

Przykład

• Pomiary ze stacji automatycznej zostały zapisane do 

pliku tekstowego w formacie charakterystycznym dla 
urządzenia pomiarowego. Po wczytaniu do Excela 
dane nie są gotowe do analizy, gdyż i data i wartość 
pomiaru znajdują się w tych samych komórkach.

• Należy więc, korzystając z możliwości, jakie daje 

Visual Basic dla Excela, rozdzielić te dane do 
osobnych komórek. Następnie dane zostaną 
zanalizowane pod kątem przekroczenia wartości 
dopuszczalnych. Wartość dopuszczalna będzie 
podawana przez użytkownika. Dane o pomiarach, 
które przekraczają podaną wartość będą przepisane 
do osobnego arkusza, a na arkuszu wejściowym 
zaznaczone kolorem.

background image

 

15

Przykład- cd

• Przejść do Edytora Visual Basica (skorzystać 

ze skrótu klawiaturowego Alt-F11 lub z menu: 
Narzędzia/Makro/Edytor Visual Basic)

• Program będzie uruchamiany z formularza. 

Utworzyć nowy formularz. Dodać przycisk 
kończenia pracy z formularzem, a następnie 
stworzyć przycisk o nazwie Przygotuj 
opisem: Przygotuj dane. Po dwukrotnym 
kliknięciu w przycisk można przejść do 
procedury obsługi zdarzenia: kliknięcie w 
przycisk
.

background image

 

16

Przykład -cd

• Należy napisać procedurę, która oddzieli 

datę od pomiaru (separatorem jest znak 
gwiazdki), datę pozostawi w komórce, 
pomiar wpisze do komórki obok. 

• Aby podzielić tak zawartość komórki 

trzeba, stosując funkcje operacji na 
tekstach, podzielić tekst na dwie części: 
od początku do gwiazdki i od gwiazdki 
do końca. 

background image

 

17

Przykład - algorytm

Algorytm wygląda więc następująco:
•  ustawić kursor w pierwszej komórce z danymi 

(tu: A4)

• dopóki komórka nie jest pusta, powtarzaj:

– znaleźć nr pozycji, na której jest gwiazdka (jeśli brak 

gwiazdki – wyświetlić komunikat)

– zapamiętać w zmiennej tekst od początku do 

gwiazdki w formie daty

– zapamiętać w zmiennej tekst od gwiazdki do końca 

tekstu w formie liczby

– datę zapisać w aktualnej komórce, liczbę zapisać w 

komórce obok, po prawe stronie

– przejść do następnej komórki

• koniec pętli

background image

 

18

Przykład - cd

• Z algorytmu wynika, że potrzebne są następujące 

zmienne: 

– nr (pozycji gwiazdki w tekście), 
– data wartość. 

• Należy wykorzystać funkcje operujące na ciągach 

znaków:

– mid(tekst, start, ile)
– len(tekst)
– instr(ciag_przeszukiwany, ciag_szukany) – funkcja ta zwraca 

nr pozycji na której w ciągu przeszukiwanym znajduje się 
poszukiwany ciąg znaków. Jeśli ciąg nie zostanie znaleziony, 
funkcja zwraca wartość 0. Np. aby znaleźć miejsce, gdzie w 
zmiennej dane znajduje się gwiazdka należy posłużyć się 
instrukcją:

• dim gdzie as integer, dane as string
• dane=”jeden*dwa”
• gdzie=instr(dane,”*”)

background image

 

19

Przykład - cd

• Procedura analizy danych wymaga 

znajomości operacji Visual Basic’a dla Excela 
dotyczących sterowania kursorem, 
zaznaczania i odczytywania obszarów, 
operowania na arkuszach itp. 

• Oto krótki spis kilku takich operacji:

– wybór komórki o podanym adresie:

• Range(adres).Select
• lub Cells(nr_wiersza, nr_kolumny).Select

background image

 

20

Przykład - cd

• wybór zakresu komórek o znanym adresie

Range(adres).Select, przy czym adres zakresu 
zapisany w postaci 
komórka_początkowa:komórka_końcowa, np. 
wybór (podświetlenie) zakresu A6:D10 to 
polecenie: Range(„A6:D10”).Select

lub Range(Cells(nr_wiersz_kom_pocz, 
nr_kol_kom_pocz), Cells(nr_wiersz_kom_konc, 
nr_kol_kom_konc))

•  komórka, w której stoi kursor:

Activecell

•  pobranie adresu zaznaczonego obszaru:

Selection.Address

background image

 

21

Przykład - cd

• Można zadeklarować zmienną, do której można wpisać adres 

obszaru wybranego przez użytkownika. Wykorzystując 
odpowiednie funkcje można następnie poznać np. adres 
początkowej komórki obszaru.

• liczba wierszy i kolumn w zaznaczonym obszarze:

– Selection.Rows.Count
– Selection.Columns.Count

• numer wiersza lub kolumny komórki aktywnej, zaznaczonego 

obszaru, obszaru o podawanym adresie itp.

– Activecell.Row Activecell.Column
– Selection.Row Selection.Column
– Range(adres).Row

Range(adres).Column

• dodanie nowego arkusza

– Sheets.Add

• możliwe jest dodanie arkusza z jednoczesnym nadaniem mu 

nazwy:

– Sheets.Add.Name=”xxxxxx”

background image

 

22

Przykład - cd

• Arkusze, poza nazwami, mają tez swoje numery, po których 

można się do nich odwoływać. Podanie w obiekcie Sheets w 
nawiasach numeru oznacza odwołanie do arkusza o tym 
numerze. Pierwszy arkusz istniejący w pliku ma numer 1.

• Przejście do arkusza o podanym numerze

– Sheets(numer).Select

• przejście do arkusza o podanej nazwie:

– Sheets(nazwa).Select

•  oznaczenie aktywnego arkusza

– Activesheet

• pobranie (nadanie) nazwy arkuszowi

– np. Sheets(numer).name
– Activesheet.name

background image

 

23

Przykład - cd

• nadanie nazwy “ABC” arkuszowi nr 2 jest 

realizowane przez instrukcję:

– Sheets(2).Name=”ABC”

• sprawdzenie ile jest arkuszy (i jaki jest numer 

ostatniego)

– Sheets.Count

• przeniesienie arkusza (przed lub za wskazany arkusz)

– Sheets(nr lub nazwa).Move Before := Sheets(nr lub nazwa)
– Sheets(nr lub nazwa).Move After := Sheets(nr lub nazwa)

• skasowanie akrusza

– Sheets(nr lub nazwa).Delete

background image

 

24

Przykład - cd

• Aby zapisać powyższe polecenia skorzystamy z tzw. okna instrukcji 

bezpośrednich. Okno to otwiera się (w edytorze Visual Basic) poleceniem 
View/Immediate Window (Widok/Instrukcje bezpośrednie). Polecenia 
wpisywane do tego okna wykonywane są natychmiast. Aby zobaczyć 
wynik należy instrukcję poprzedzić znakiem zapytania. Np. aby wykonać 
instrukcję podającą zawartość komórki D6 w oknie instrukcji 
bezpośrednich należy wpisać:

– ? Range(„d6”).Fomula

• Przykładowo można wykonać następujące polecenia:

– dodać nowy arkusz, przenieść go na koniec arkuszy
– sprawdzić, jaki jest numer tego arkusza
– nadać mu nazwę „zadanie” (sprawdzić efekt na arkuszu)
– przenieść kursor do tego arkusza (sprawdzić efekt na arkuszu)
– wpisać instrukcję zaznaczającą obszar A3:D8 (sprawdzić efekt na arkuszu)
– przejść na arkusz, myszką zaznaczyć dowolny inny obszar, wrócić do Edytora 

Visual Basic’a, sprawdzić, jaki jest adres zaznaczonego obszaru

– sprawdzić, ile jest wierszy w zaznaczonym obszarze
– usunąć arkusz „zadanie”
– Po wykonaniu zadań zamknąć okno instrukcji bezpośrednich.

background image

 

25

Przykład -cd 

• Następny krok to przygotowanie procedur 

analizy danych. Wartość dopuszczalną 
podaje użytkownik w odpowiednim polu na 
formularzu. 

• W tym celu należy dodać do formularza 

etykietę o dowolnej nazwie; we właściwości 
Caption wpisać Wartość dopuszczalna
Obok umieścić pole tekstowe o nazwie prog
Dodać przycisk o nazwie przekroczenia, z 
opisem Analizuj dane. Na następnym 
slajdzie przedstawiony jest przykładowy 
formularz.

background image

 

26

Przykład- cd

background image

 

27

Przykład- cd

Podstawowe kroki w algorytmie to:
• jeśli nie jest wpisana wartość dopuszczalna – 

wyświetlić komunikat, w przeciwnym 
wypadku kontynuować;

• jeśli dane nie zostały przygotowane (np. jest 

gwiazdka w komórce A4) – wyświetlić 
komunikat, w przeciwnym wypadku 
kontynuować;

– utworzyć nowy arkusz
– nadać mu nazwę przekroczenia
– przesunąć go za ostatni istniejący arkusz (jest to 

operacja z jednej strony „kosmetyczna”, z drugiej 
strony, w naszym przypadku dająca pewność, że 
arkusz ze wszystkimi danymi ma numer jeden 

background image

 

28

Przykład - cd

– w komórce A1 nowego arkusza wpisać tekst: „Lista 

pomiarów przekraczających wartość”; dołączyć do 
wypisywanego ciągu znaków wartość dopuszczalną 
wpisaną w polu na formularzu 

– ustawić kursor w następnej komórce
– wrócić do pierwszego arkusza
– przechodzić kursorem po wszystkich komórkach z 

danymi. 

• jeśli wartość pomiaru jest większa niż wartość 

dopuszczalna:zaznaczyć dane na amarantowo 
(Activecell.Font.ColorIndex=7)

• przepisać dane do odpowiedniej komórki drugiego 

arkusza

background image

 

29

Przykład - treści 

procedur

Private Sub przygotuj_Click()
Dim nr As Integer, dat As Date, war As Single
Range("a4").Select
Do While ActiveCell.Formula <> ""

nr = InStr(ActiveCell.Formula, "*")
if nr=0 then 
MsgBox(„Błędna dana w komórce ”+Activecell.Address)
else
dat = CDate(Mid(ActiveCell.Formula, 1, nr - 1))
war = Val(Mid(ActiveCell.Formula, nr + 1,Len(ActiveCell.Formula)-nr))
ActiveCell.Formula = dat
ActiveCell.Offset(0, 1).Formula = war
endif
ActiveCell.Offset(1, 0).Select

Loop
End Sub

background image

 

30

Przykład - treści 

procedur

Private Sub przekroczenia_Click()
Dim adres_p As String, nazwa_arkusza As String, wart As Single, dat As Date
nazwa_arkusza = "przekroczenia"
If prog.Text = "" Then

MsgBox ("Wpisz wartość progową!")

Else

Sheets(1).Select
If InStr(Range("a4").Formula, "*") <> 0 Then
MsgBox ("Dane nie są przygotowane!")
Else
Sheets.Add.Name = nazwa_arkusza
ActiveSheet.Move after:=Worksheets(Worksheets.Count)
Range("a1").Formula="Lista pomiarów przekraczających wartość”+ prog
Range("a2").Select
adres_p = ActiveCell.Address
Sheets(1).Select
Range("a4").Select

background image

 

31

Przykład - treści 

procedur

Do While ActiveCell.Formula <> ""
wart = Val(ActiveCell.Offset(0, 1).Formula)
dat = CDate(ActiveCell.Formula)
If wart > Val(prog.Text) Then
ActiveCell.Font.ColorIndex = 7
ActiveCell.Offset(0, 1).Font.ColorIndex = 7
Sheets(nazwa_arkusza).Select
Range(adres_p).Formula = dat
Range(adres_p).Offset(0, 1).Formula = wart
adres_p = Range(adres_p).Offset(1, 0).Address
End If
Sheets(1).Select
ActiveCell.Offset(1, 0).Select
Loop
End If

End If
End Sub


Document Outline