Poniżej napiszemy błyskawicznie pierwszy program używający formularzy. Wiemy już jak używać edytora VBE i pisać kod, skupię się więc na elementach tworzenia formularzy. Napiszemy program dodający jednocześnie kilka arkuszy.
Formularz będzie zawierał dwa pola. W pierwszym będę wpisywał ilość arkuszy do dodania. W drugim pierwszy człon nazwy. Kolejne arkusze będę się nazywać: nazwa_1, nazwa_2, nazwa_3 itd. Dodam też przycisk uruchamiający samo dodawanie oraz przycisk anulowania. Przyciski i pola na formularzu są często nazywane kontrolkami.
Rozpoczynamy od otworzenia nowego skoroszytu. Otwieram VBE , dodaję nowy formularz i zmieniam jego nazwę oraz nagłówek.
Dodawanie nowego formularza |
Chciałbym teraz dodać dwa pola i jeden przycisk. Listę kontrolek do dodania znajdę w przyborniku toolbox. Włączę go w górnym menu view/toobox.
Przybornik zawierający podstawowe kontrolki |
Przy pomocy graficznego edytora dodam dwa pola tekstowe. Nie zapominam o nadaniu im odpowiednich nazw. Tak jak to opisałem w przypadku zmiennych, tutaj też jest bardzo istotne aby każdy element miał odpowiednią nazwę.
Każde pole musi być odpowiednio opisane, żeby użytkownik wiedział co powinien wpisać. Dodam dwie kontrolki label.
Na koniec dodam dwa przyciski z odpowiednimi nazwami i napisami.
Zmienię jeszcze rozmiar formularza i mogę go już uruchomić przy pomocy przycisku Play (F5). Formularz można zamknąć krzyżykiem w prawym, górnym rogu. Naciskanie przycisków nic nie da, ponieważ nie dodaliśmy do nich żadnych zdarzeń.
Zostało nam tylko dodać kod do przycisków. Znacznie mniej kodu będzie pod przyciskiem Anuluj. Wystarczy kliknąć dwa razy w przycisk Anuluj. Otwiera się edytor z automatycznie utworzonym zdarzeniem:
1 2 3 |
Private Sub cmdCancel_Click() End Sub |
1 2 3 |
Private Sub cmdCancel_Click() Unload AddSheets End Sub |
1 2 3 4 5 6 7 8 9 |
Private Sub cmdAdd_Click() Dim lv_Counter As Integer Dim lr_NewSheet As Worksheet For lv_Counter = 1 To txtIle Set lr_NewSheet = Worksheets.Add lr_NewSheet.Name = txtNazwa & "_" & lv_Counter Next lv_Counter End Sub |
Teraz uruchamialiśmy formularz z edytora VBE. Musimy udostępnić możliwość wygodnego uruchamiania formularza przez użytkownika. Służy do tego metoda Show formularza.
1 |
AddSheets.Show |
Powyższą instrukcję możemy uruchomić na różne sposoby. Tym razem stworzę w nowym module kodu najprostszą procedurę:
1 2 3 |
Sub ShowForm() AddSheets.Show End Sub |
Od teraz naciśnięcie ctrl + y pokazuje nasz formularz.
Podsumowanie
Powyższy kod wykonuje tylko podstawową zaplanowaną funkcjonalność. Oczywiście program można (nawet należy) jeszcze znacznie poprawić, na przykład dodać sprawdzanie czy podana ilość arkuszy ma rozsądną wartość (nie za dużą lub za małą) lub czy nazwa nie zawiera niedozwolonych znaków. W tej chwili pojawi się błąd, jeżeli program spróbuje dodać arkusz o nazwie, która już występuje.
Comments 2
Cześć. Jaką dodać linijkę kodu, żeby zamknął się formularz przed wyświetleniem podglądu wydruku, wywołany przyciskiem drukuj (zawartym w formularzu). Podgląd wydruku wywołuję
Worksheets("formularz").Range("A1:I56").PrintPreview
Na podglądzie "wisi" formularz.
Cześć.
Dziękuję za pytanie. Odpowiadam na wypadek, gdyby ktoś spotkał się z takim samym problemem, bo pewnie już znalazłeś odpowiedź.
Można to wykonać poprzez zamknięcie formularza przed wywołaniem podglądu:
Unload Me
Worksheets("Sheet1").Range("A1:I56").PrintPreview