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