makro for vba
Transkrypt
makro for vba
ćwicz VBA 92 i losowanie formularze w VBA Do prezentacji lub wprowadzania danych w excellu słuŜą formularze. Aby je uruchomić naleŜy w VBA na pasku narzędzi uruchomić :. Insert\UserForm. Klikając na czyste pole formularza uruchomi się pasek narzędzi. Ćwicz 1 Utwórz na pulpicie katalog ZAB następnie wgraj do niego trzy pliki jpg. Ze strony CBA... lub z pliku pliki to 1.jpg, 2.jpg 3.jpg Posługując się narzędziami wstaw do formularza trzy pola textbox. (białe) Wstaw takŜe trzy pola Image. Wstaw na dole pole wyniku (tekstowe). DołóŜ takŜe przycisk. Przykładowy układ przedstawia rysunek. Następnie nazwij wszystkie pola. W rubryce VBA. rys na dole. Kliknij myszą na dane pole i wpisz jego nazwę. Górny rząd to foto po kolei daj nazwy fot1, foto2, foto3. Drugi rząd to pola tekstowe: txt1, txt2, txt3. Prawe pole to : txtwynik. Nazwy wpisz w pole jak na rysunku. Następnie kliknij na przycisk i nadaj mu nazwę; w polu name : losuj, i w polu caption: losuj Przyciśnij przycisk dwa razy i uruchomi się edytor makra. Następnie wpisz makro: Private Sub losuj_Click() Dim liczba1, liczba2, liczba3 As Integer Randomize liczba1 = Int(Rnd * 3) + 1 liczba2 = Int(Rnd * 3) + 1 liczba3 = Int(Rnd * 3) + 1 txt1.Text = liczba1 1 ćwicz VBA 92 i losowanie txt2.Text = liczba2 txt3.Text = liczba3 foto1.Picture = LoadPicture("pełna ścieŜka do plików" + Trim(Str(liczba1)) + ".jpg") foto2.Picture = LoadPicture("d:\za\" + Trim(Str(liczba2)) + ".jpg") foto3.Picture = LoadPicture("c:\za\kola\" + Trim(Str(liczba3)) + ".jpg") If liczba1 = liczba2 And liczba2 = liczba3 Then txtwynik.Text = "wygrałeś" else txtwynik.Text = "graj dalej" End If End Sub Trim – funkcja usuwająca spacje Aby twój formularz startował po uruchomieniu pliku naleŜy kliknąć ThisWorkbook i zmienić General na WorkBook oraz obok wybrać Open. Następnie wpisz do makra nazwę formularza i dyrektywę. Private Sub Workbook_Open() UserForm1.Show End Sub Uruchom plik ; Ŝyczę szczęścia Ćwiczenie:2 Utwórz nowy plik w excelu i nazwij go biblio. W pliku tym zmień nazwę arkusza na : ksiazki. Następnie w arkuszu utwórz tabelę, a w komórki wpisz nazwy: Autor Tytuł Wydawnictwo Nazwij komórki drugiego wiersza zawartością wiersza pierwszego: uruchom na pasku excela Wstaw/nazwy/definiuj pamiętaj abyś był pod odpowiednia nazwą. W polu nazwy arkusza pojawi sę nie znak B1, a nazwa Autor W arkuszu ksiąŜki do komórki G1 przekopiuj nagłówek kolumny Wydawnictwo. Komórka ta będzie jednocześnie kryterium filtrowania, oraz nagłówkiem kolumny wynikowej. Następnie uruchom VBA i wykonaj formularz. Zbuduj formularz wg wzorca. napisy to pola label zmień jego nazwę w polu Caption. Następnie utwórz dwa pola tekstowe o nazwach : Tytuł i Autor oraz pole kombi o nazwie : Wydawnictwo. Utwórz takŜe przycisk o nazwie Wczytaj dane. Formularz powinien wyglądać tak 2 ćwicz VBA 92 i losowanie Wciśnij przycisk wczytaj dane na formularzu dwa razy i napisz makra: Sub filtruj() Dim zakres As Range Set zakres = Worksheets("ksiazki").Range("a1").CurrentRegion zakres.AdvancedFilter Action:=xlFilterCopy, criteriarange:=Range("g1"), {dalej drugi wiersz w tej samej lini} copytorange:=Range("g1"), unique:=True End Sub Sub ustaw_zakres() Dim n As Integer filtruj n = Sheets("ksiazki").Range("g1").CurrentRegion.Rows.Count Wydawnictwo.RowSource = "ksiazki!g2:g" & n End Sub Private Sub CommandButton1_Click() Dim n As Integer If Sheets("ksiazki").Range("autor").Value = "" Then n=0 Else n = Sheets("ksiazki").Range("A1").CurrentRegion.Rows.Count - 1 End If Range("tytuł").Offset(n, 0).Value = Tytuł.Value Range("autor").Offset(n, 0).Value = Autor.Value Range("wydawnictwo").Offset(n, 0).Value = Wydawnictwo.Value ustaw_zakres Tytuł.Value = "" Autor.Value = "" End Sub Napisz takŜe procedurę Activate- ustawiającą wstępnąy zakres listy Private Sub UserFrom_Activate() ustaw_zakres End Sub Dopisz jak w poprzednim ćwiczeniu makro, które otwiera formularz przy starcie pliku. Dane z formularza powinny dopisywać się do arkusza. 3