VBA_word2.doc

(36 KB) Pobierz
Praca z Edytorem Visual Basic

Praca z Edytorem Visual Basic
W poprzedniej lekcji nauczyliśmy się tworzyć makra, otwierać edytor Visual Basica oraz przeglądać strukture projektu. W tej lekcji zajmiemy się analizą naszego makra oraz dalszą pracą w VBA.

 

§         Analiza makra
Kiedy otwieramy makro w edytorze Visual Basica zobaczymy poniższy kod (w przykładzie ponumerowałem linie w celu lepszego zrozumienia)

1.    Sub Puchatek()

2.   ' 

3.   ' PuchatekMakro

4.   '  Makro1zmiana formatowania tekstu

5.   '

6.       With Selection.Font

7.         .Name = "Times New Roman"

8.         .Size = 10

9.         .Bold = False

10.                            .Italic = True

11.                            .Underline = wdUnderlineNone

12.                            .StrikeThrough = False

13.                            .DoubleStrikeThrough = False

14.                            .Outline = False

15.                            .Emboss = False

16.                            .Shadow = False

17.                            .Hidden = False

18.                            .SmallCaps = False

19.                            .AllCaps = False

20.                            .ColorIndex = wdAuto

21.                            .Engrave = False

22.                            .Superscript = False

23.                            .Subscript = False

24.                            .Spacing = 0

25.                            .Scaling = 100

26.                            .Position = 0

27.                            .Kerning = 0

28.                            .Animation = wdAnimationNone

29.                          End With

30.                       End Sub

Linia - 1 słowem Sub otwiera nową procedure o nazwie Puchatek (procedura to taki element w programie grupujący pewną ilość komend które można wykonać kiedy się ją wywoła)
Linie - 2 do 5 otwierane są przez symbol - ' - ,oznacza on rozpoczęcie notatki. Za takim znakiem można umieszczać dowolny tekst który nie zostanie zinterpretowany przez Visual Basica (w edytorze tekst ten jest oznaczony kolorem zielonym). Innym sposobem wprowadzenia notatki jest użycie komendy REM (ze spacją).
Linia - 6 otwiera komenda With służy ona do skrócenia ilości tekstu odwołującego się do kilku właściwości tego samego obiektu jej składnia wygląda tak

31.                      With obiekt

32.                         .właściwość1 = wartość1

33.                         .właściwość1 = wartość2

34.                      End With

Obiektem jest tutaj Selection.Font. Można oczywiście cały kod zapisać nie korzystając z komendy With. np. ;

35.                      Selection.Font.Name = "Times New Roman"

36.                      Selection.Font.Size = 10

37.                      Selection.Font.Bold = False

Często tak właśnie się robi, ale gdy występuje więcej tych samych "nad obiektów" nie ma potrzeby powtarzania tego samego tekstu. Jak widać z kodu naszego makra większość obiektów ma swoje pod obiekty i tak Obiekt Selection ma podobiekt Font, a on podobiekt Name poszczególne obiekty w hierarchii są oddzielone od siebie kropką a właściwości obiektu są umieszczone po prawej stronie za znakiem równości.
Można by to zobrazować w ten sposób obiekt samochód ma w sobie obiekt koło którego pod obiektem jest opona a jej właściwością jest tutaj np. stopień napompowania o jakieś wartości - samochód.koło.opona.ciśnienieniewoponie=20.
Linie - 7 do 28 określają konkretne właściwości obiektu Select.Font. Obiekt ten po prostu oznacza "zaznaczony.tekst" i tak własność:
- Name - to nazwa czcionki (każda wartość w postaci tekstu powinna być obięta cudzysłowiem),
- Size - wielkość czcionki,
- Bold - przyjmuje dwie wartości True albo False (można też wpisać 1lub 0). True oznacza tutaj potwierdzenie (czcionka pogrubiona) False negacje (czcionka bez pogrubienia).
- Italic - określa czy czcionka ma być pisana kursywą
- Underline to sposób podkreślenia i może on przyjmować wartości wdUnderlineNone (brak podkreślenia), wdUnderlineDash, wdUnderlineDotDash, wdUnderlineDotDotDash, wdUnderlineThick, wdUnderlineDotted, wdUnderlineDouble, wdUnderlineSingle, wdUnderlineWords, wdUnderlineWavy jak widać są to wartości zdefiniowane dlatego nie należy ich umieszczać w cudzysłowie podobnie jak słowa True i False. (zamiast nich można użyć liczb od 0 do 11 gdzie 0 to brak podkreślenia)
- Outline - (opisze przy najbliższej okazji)
- Emboss - (opisze przy najbliższej okazji)
- Shadow - (opisze przy najbliższej okazji)
- Hidden - (opisze przy najbliższej okazji)
- SmallCaps - (opisze przy najbliższej okazji)
- AllCaps - (opisze przy najbliższej okazji)
- ColorIndex - kolor czcionki morze przyjmować wartości wdAuto, wdBlack, wdBlue, wdBrightGreen, wdDarkBlue, wdDarkRed, wdDarkYellow, wdGray25, wdGray50, wdGreen, wdNoHighlight, wdPink, wdRed, wdTeal, wdTurquoise, wdViolet, wdWhite, wdYellow (zamiast nich można użyć liczb od 0 do 16 gdzie 0 to kolor auto zazwyczaj czarny). Jak widać możemy użyć 16 kolorów czcionki.
- Engrave - (opisze przy najbliższej okazji)
- Superscript - (opisze przy najbliższej okazji)
- Subscript - (opisze przy najbliższej okazji)
- Spacing - (opisze przy najbliższej okazji)
- Scaling - (opisze przy najbliższej okazji)
- Kerning - (opisze przy najbliższej okazji)
- Animation - sposób animacji morze przyjmować wartości wdAnimationBlinkingBackground, wdAnimationLasVegasLights, wdAnimationMarchingBlackAnts, wdAnimationMarchingRedAnts, wdAnimationNone, wdAnimationShimmer, wdAnimationSparkleText (zamiast nich można użyć liczb od 0 do 6 gdzie 0 to brak efektu)
Ostatnia linia 30 zamyka procedure Puchatek

§         Przykładowa zmiana elementów makra
Naszym następnym zadaniem będzie takie przetworzenie kodu aby za każdym zastosowaniem makra uzyskać inny efekt animacji w tym celu będziemy musieli wygenerować liczbę losową. W Visual Basicu służy do tego funkcje Rnd. Funkcje są w pewnym sensie podobna do procedur (np. Procedury Puchatek) ale potrafą zwracać wartości. Funkcja Rnd pozwala na wygenerowanie liczby losowej z większej lub równej od 0 ale mniejszej od 1. Jej składnia wygląda następująco Rnd[(liczba)] (liczba jest argumentem opcjonalnym i określa sposób w jaki liczba jest generowana). W celu zainicjowania generatora należy użyć funkcji Randomize[(liczba)] (podobnie jak wyżej w funkcji Rnd wartość liczba jest tutaj opcjonalna gdy nie użyje się żadnej liczby to Randomize przekarze generatorowi liczb losowych wartość "ziarna" pochodzącą z zegara systemowego). Aby uzyskać efekt różnych animacji potrzebujemy liczby z przedziału od 1 do 6 a jak wiemy generator pozwala uzyskać liczby z przedziału od 0 do 1 dlatego trzeba napisać komendę która umożliwi rozszerzenie jego możliwości:
Int((wartość_największa_przedziału - wartość_najmniejsza_przedziału + 1) * Rnd + wartość_najmniejsza_aprzedziału).
I tutaj poznajemy nową funkcje - Int . Jej składnia jest następująca Int[(liczba)]. funkcja ta odrzuca wartość całkowitą argumentu liczba i ją zwraca (jak widać wartością liczba jest tu działanie ((wartość_największa_przedziału - wartość_najmniejsza_przedziału + 1) * Rnd + wartość_najmniejsza_przedziału) w którym wartość_najmniejsza_przedziału to najmniejsza z potrzebnych liczb a wartość_największa_przedzału to największa z potrzebnych liczb). Dla naszego przykładu funkcja ta będzie miała następującą postać:
Int((6-1+1)*Rnd+1) tą zależność umieścimy teraz w naszym makrze Puchatek, ale żeby ograniczyć działanie makra do zmiany tylko efektu animacji usuniemy z niego niepotrzebne elementy tak aby miało ono postać:

1.   Sub Puchatek()

2.     'Puchatek Makro

3.     'Makro1 zmiana formatowania tekstu

4.     '

5.     With Selection.Font

6.        .Animation = wdAnimationSparkleText

7.     End With

8.   End Sub

I następnie

9.   Sub Puchatek()

10.                        'Puchatek Makro

11.                        'Makro1 zmiana formatowania tekstu

12.                        '

13.                        Randomize

14.                        Selection.Font.Animation = Int((6-1+1)*Rnd+1)

15.                      End Sub

Jeśli będziemy chcieli aby wśród tych losowych wartości było również 0 (brak animacji) można spokojnie ją umieścić zamiast jedności. Poza tym w analogiczny sposób można zastosować tą funkcje dla np. zmiany kolorów w zaznaczonym tekście.
Podczas wpisywania danych w naszym module edytor VBA pokazuje nam domyślne wartości jakich oczekuje dla danej funkcji jest to często bardzo przydatna cecha dzięki której można ograniczyć bardzo wiele błędów. Inną jego cechą VB jest nie rozróżnialność wielkości liter kodu.
W następnych lekcjach zajmiemy się tworzeniem formularzy oraz okienek uruchomieniowych

 

Zgłoś jeśli naruszono regulamin