04finiuj i modofikuj

Wstawianie formantu formularza „Przycisk" i analiza (modyfikowanie) zarejestrowanego makra

Utwórz makro wstawiające przycisk do komórki B21-B22. Przyciskowi przy­pisz makro Sortuj rosnąco.

1. Włącz rejestrowanie makra. Rejestrowane makro nazwij Definiuj_przycisk_FF.

2. Wstaw przycisk z Zakładki Deleloper do komórki B21-B22 i w oknie dialogowym, które ujrzysz, przypisz do niego makro Sortuj_rosnąco.

3. Na przycisku wpisz słowo „Sortuj rosnąco”. Jeżeli napis nie jest dobrze widoczny, wywołaj polecenie Formatuj formant, dostępne podręcznym (wyświetlanym po kliknięciu formantu Prawym przyciskiem myszy, i dokonaj niezbędnych modyfikacji.

4. Zatrzymaj rejestrowanie makra.

Analiza (i modyfikowanie) zarejestrowanego makra (zmodyfikuj makro Definiuj_przycisk_FF tak, aby uruchamiane były na przemian makra Sortuj_rosnąco i Sortuj_malejąco, a użytkownik był informowany o bieżącym sposobie sortowania tabeli).

1. Naciśnij Alt+F11, aby uruchomić edytor VBA.

2. W eksploratorze projektu wybierz swój projekt i dwukrotnie kliknij nazwę modułu (Module2), aby otworzyć jego kod.

Jeżeli nie widzisz eksploratora projektu, naciśnij Ctrl+R lub wybierz polecenie (wreszcie są paski narzędzi!) View/Project Explorer.

Rysunek 1. Sub Definiuj_przycisk_FF

3. Wybierz makro Definiuj_przycisk_FF, aby przejść do jego edycji.

Kod wygenerowany przez rejestrator podczas tworzenia przycisku w komórce B21-B22 wgląda tak:

Sub Definiuj_przycisk_FF()

'

' Definiuj_przycisk_FF Makro

'

'

ActiveSheet.Buttons.Add(38.25, 285, 109.5, 28.5).Select

Selection.OnAction = "Sortuj_rosnąco"

ActiveSheet.Shapes("Button 2").Select

Selection.Characters.Text = "Sortuj rosnąco"

With Selection.Characters(Start:=1, Length:=15).Font

.Name = "Czcionka tekstu podstawowego"

.FontStyle = "Standardowy"

.Size = 11

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xlUnderlineStyleNone

.ThemeColor = 2

.TintAndShade = 0

.ThemeFont = xlThemeFontNone

End With

Range("B5").Select

End Sub

Ten kod zawiera dużo zbędnych informacji, których obecność nie wpływa na jego działanie. Wynika to z tego, że rejestrator zapisuje wszystkie właściwości tworzonego obiektu. Przeanalizujmy ten listing, abyśmy mogli go później świadomie zmodyfikować.

Sub Definiuj_przycisk_FF()

Fragment ten oznacza początek makra. Wszystkie następne polecenia — aż do polecenia End Sub — zaliczone będą do jednego makra. Po poleceniu Sub podawana jest nazwa makra i (opcjonalnie) jego argumenty, umieszczone w nawiasach. Nazwa makra i argumentów nie może: - rozpoczynać się od znaku innego niż litera; - być identyczna z nazwą polecenia czy funkcji używanej przez Visual Basi; - zawierać spacji — może natomiast zawierać niektóre znaki specjalne.

'

' Definiuj_przycisk_FF Makro

'

'

To komentarze. Ich zawartość nie jest analizowana przez program. Komentarze są bardzo przydatne przy analizowaniu kodu makra. Jeżeli umieścisz je podczas pracy, za kilka miesięcy nie stracisz całego dnia, gdy będziesz chciał coś poprawić.

ActiveSheet.Buttons.Add(38.25, 285, 109.5, 28.5).Select

To polecenie wstawia przycisk do arkusza1 zaznacza go.

Selection.OnAction = "Sortuj_rosnąco"

Przypisuje zaznaczonemu obiektowi makro Sortuj_rosnąco, które będzie uruchamiane po kliknięciu myszą (OnAction).

ActiveSheet.Shapes("Button 2").Select

Po przypisaniu makra nastąpiło zamknięcie okna dialogowego. Należało ponownie zaznaczyć obiekt, aby móc edytować jego właściwości. Przy okazji dowiadujemy się, że przyciskowi została przydzielona nazwa Button 2, która będzie nam w przyszłości identyfikować obiekt bez względu na jego stan i położenie.

Selection.Characters.Text = "Sortuj rosnąco"

Wpisuje tekst … na przycisku.

With Selection.Characters(Start:=1, Length:=15).Font

.Name = "Czcionka tekstu podstawowego"

.FontStyle = "Standardowy"

.Size = 11

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xlUnderlineStyleNone

.ThemeColor = 2

.TintAndShade = 0

.ThemeFont = xlThemeFontNone

End With

Określa właściwości czcionki.

Instrukcje zawarte w blokach między With a End With zawsze dotyczą obiektu określonego przez instrukcję With.

Range("B5").Select

Zaznacza komorkę. Po każdym sortowaniu zostanie zaznaczona komórka B5.

End Sub

Kończy makro.

4. Z całego makra interesują nas tylko poniższe trzy wiersze kodu:

Selection.OnAction = "Sortuj_rosnąco"

ActiveSheet.Shapes("Button 2").Select

Selection.Characters.Text = "Sortuj rosnąco"

5. Przeanalizujmy ten listing, abyśmy mogli go później świadomie zmodyfikować. Zastanów się, jak możesz spowodować zmianę makra?

Zmieniane przypisanie przycisku powinno być po każdym sortowaniu. Należy więc dodać odpowiednie polecenia do makr sortujących. Wystarczy wpisać słowo Definiuj_przycisk przed poleceniami End Sub makr Sortuj_rosnąco i Sortuj_malejąco.

Jeżeli napis na przycisku brzmi „Sortuj malejąco", to przypisz makro „Sortuj_malejąco". W przeciwnym razie przypisz makro „Sortuj_rosnąco"


Wyszukiwarka