VBA cwiczenie3 -2010 1 OFFSET -przesunięcie wyboru komórki Właściwości Offset(pion, poziom) wywołanie z obiektu Range dokonuje przesunięcia wyboru komórki lub zakresu komórek. Offset(-2,0) Offset(0,-2) Offset(0,1) Offset(1,0) Proszę zwrócić uwagę na parametry i ich znaki Przykłady działania OFFSET Range(„a1”).Offset(0,3).Value=4 ‘ wpisuje wartość 4 do komórki oddalonej od A1 o wartość 3 w prawo ActiveCell.Offset(1,1).Select ‘ zaznacza komórki oddalone od aktywnej o jeden w dół i o jeden w prawo Inna metoda wyznaczania komórki Cells(wiersz, kolumna) Cells(wiersz, kolumna) - komenda ta określa aktywna komórkę poprzez podanie jej współrzędnych wartość wiersza i kolumny to liczba całkowita dodatnia większa od 0. Np.: Cells(2,3).value= i ‘ drugi wiersz arkusza i trzecia kolumna Cells(k+1,3).value= i ‘ k-zmienna zm=Cells(3,5) Pętla FOR: Pętle w programowaniu służą do powtarzania jednakowych czynności. Czynności te wpisuje się wewnątrz pętli (instrukcje pętli). Pętla For sterowana jest licznikiem i wykona się tyle razy aż zwiększenie licznika o krok osiągnie wartość końca pętli. Gdy nie podamy kroku automatycznie przyjęta zostanie wartość kroku = 1 FOR licznik= [wartość początkowa pętli] TO [wartość końcowa pętli] STEP [Krok] Instrukcje pętli NEXT Wartość [wartość początkowa pętli] i [wartość końcowa pętli] powinna być typu liczbowego zgodnie z typem zmiennej licznik. Przykład Sub przyklad1() Dim licz As Integer VBA cwiczenie3 -2010 For licz = 1 To 4 MsgBox ("licznik pętli =" & licz) Next End Sub 2 'początek pętli 'instrukcje w pętli 'koniec pętli Zastosowanie pętli for w obliczeniu sumy kolejno wprowadzonych liczb: Sub przyklad_2() Dim i, n As Integer Dim liczba, suma As Single n = InputBox("podaj ile liczb") For i = 1 To n 'początek pętli liczba = InputBox("podaj" + Str(i) + "liczbę") 'wprowadzanie liczby suma = suma + liczba 'sumowanie liczb Next ' koniec pętli MsgBox ("suma liczb = " & suma) ‘wyświetlanie sumy liczb End Sub Makro z pętlą FOR wpisujące w arkusz liczby od 1 do 10 i mnożące je przez 2 (zastosowany offset) Sub tab_mno() Dim j, k As Integer k=0 ‘ wartośc początkowa j=2 For i = 1 To 10 Range("c2").Offset(k, 0).Value = i Range("c2").Offset(k, 1).Value = j Range("c2").Offset(k, 2).Value = i * j k=k+1 ‘ zwiększenie rzędu o 1 Next End Sub (zastosowane polecenie cells) Sub tab_mno2() Dim j, k As Integer k=4 j=2 Range("a1:e30").ClearContents For i = 1 To 10 Cells(k, 1).Value = i Cells(k, 2).Value = j Cells(k, 3).Value = i * j k=k+1 Next End Sub ‘czyszczenie komórek Zadanie 1 Napisz makro obliczające silnię liczby (n!). Skorzystaj z pętli FOR wpisana liczba (n) nie większa niż 10. VBA cwiczenie3 -2010 3 Zadanie2 Skorzystaj z offset lub cells i wypisz w kolumnie w arkuszu poszczególne iloczyny przy obliczaniu silni. Korzystanie z kolorów w zakresie Kolory w zakresie ustawiamy poprzez przypisanie właściwości Interior.ColorIndex liczby całkowitej z przedziału od 1 do 56 Np.: Range („A1”).Interior.ColorIndex=4 Można także wykorzystać stałe reprezentujące kolory np.: vbYellow, vbGrenn itp. Range („A1”).Interior.Color = vbBlue Funkcją związaną z kolorami jest RGB(Red, Green, Blue) Wartość składowa dla poszczególnych kolorów może być w zakresie 1-255 Przykład _1a Sub Przykład_1() Dim b As Byte b=80 Range(„f21:f24”).Interior.Color=RGB(0,0,b) End Sub Zadanie 1a: Napisz makro, które zamaluje na zielono komórkę oddaloną od B1 o Offset(3,1). (zmodyfikuj przykład 1) Zadanie 2a Stosują właściwości komórki Interior.ColorIndex oraz przesunięcie Offset napisz makro, które zamaluje na zielono 5 komórek w kształcie krzyża . Zadani 3a Napisz makro, które stosując pętlę w pętli, maluje różnymi kolorami komórki prostokątnego obszaru (użyj pętli FOR). Zastosuj 100 kolorów. Rozmiar obszaru wczytaj funkcją InputBox. Zadanie 4a Napisz makro, które wpisuje tabliczkę mnożenia dla iloczynu liczb2*N= gdzie N to liczba od 1 do 10. Liczby wypisywane są w pionie. Pamiętaj aby pojawił się napis np. (2*5=10) itd. Zadanie 5a Zmodyfikuj program zadania 5 w taki sposób aby użyć dwóch pętli FOR zagłębionych oraz offsetu. Wynikiem działania makra ma być wypisana tabliczka mnożenia w kolumnach. Np. 1*1=1 1*2=2 2*1=2 2*2=4 3*1=3 3*2=6