Adatbázis rendszerek 1. 3. Gy: Excel makrók Ismétlőrobotok
B IT M A N
78/1
2015.09.27 B ITv: M AN
Makró definíció by Microsoft m Ha a Microsoft Excel programban ismétlődő feladatokat
kell megoldani, a feladatok automatizálásához makrókat készíthetünk. A makró egy olyan művelet vagy műveletsor, amelyet bármennyi alkalommal futtathat. Makró létrehozásakor rögzíti az egérkattintásokat és billentyűleütéseket. A makró létrehozása után szerkesztéssel módosíthatjuk a makró működését.
78/2
B IT M A N
Előkészületek File\Beállítások\Menüszalag testreszabása
– Fejlesztőeszközök bekapcsolása
78/3
B IT M A N
Próbamakró 1. Írjuk be az adatokat, és kezdjük meg a Makró rögzítését!
78/4
B IT M A N
Próbamakró 2. Formázzuk meg a táblázatot, ezután kattintsunk a
Rögzítés vége gombra.
78/5
B IT M A N
Próbamakró 3. Másoljuk át az adatokat egy másik munkalapra, és
indítsuk el az előbb létrehozott makrót: – Makrók\ Makró1 \Indítás
78/6
B IT M A N
Próbamakró 4. A makró kódjának megtekintése:
– Makrók\ Makró1\Szerkesztés
78/7
B IT M A N
A Visual Basic megtanulása by Microsoft m Elsajátíthatja a Visual Basic programozási nyelv alapjait,
ha a rögzített makrót szerkeszteni próbálja. A makró szerkesztéséhez a Fejlesztőeszközök lap Kód csoportjában kattintson a Makrók gombra, jelölje ki a rögzített makró nevét, majd kattintson a Szerkesztés gombra. Ekkor megnyílik a Visual Basic Editor program. A kódot megfigyelve láthatja, hogy a rögzített műveletek hogyan jelennek meg a kódolásban. Egyes kódok világosan érthetők, mások azonban kissé érthetetlenek lesznek. Kísérletezzen a kóddal, zárja be a Visual Basic Editor programot, majd indítsa el újra a makrót. Figyelje meg, hogy ezúttal más lesz-e az eredmény. 78/8 B IT M A N
Minimakró 1. Készítsünk egy egyszerű makrót, mely összeszoroz két
számot. B4=A2*B2
2 3
1
78/9
B IT M A N
Minimakró 2.
2 1
3
Írjuk be a kódot, ezután indítsuk el a makrót.
78/10
4
B IT M A N
Minimakró 3. Próbáljuk ki ugyanezt makrórögzítéssel:
– Makró rögzítése – Név: Makró1, aztán OK – Katt. a B4 cellába – Képlet beírás: =A2 * B2 – Rögzítés vége Az eredmény: – Két egyforma hatású makró, – Eltérő kód.
78/11
=
=
=
B IT M A N
Visual Basic – Hivatkozások Az Excelbeli elnevezések
Programkódbeli megfelelő
A B3 cella
Cells(3,2)
A C4:G6 tartomány
Range(Cells(4,3),Cells(6,7))
A B oszlop
Columns(2)
A H, I, J oszlopokból álló tartomány
Range(Columns(8),Columns(10))
A 2. sor
Rows(2)
A 13.-tól a 16.-sorig tartó tartomány
Range(Rows(13),Rows(16))
A munkalap összes cellája
Cells
Meghatározott munkalap cellái
Sheets(2).Cells
Az éppen aktuális cella
ActiveCell
Az éppen kijelölt objektum (cella, tartomány, rajz, diagramm)
Selection
78/12
B IT M A N
Visual Basic – Cellatulajdonságok Programból úgy tudjuk ezeket a tulajdonságokat megadni, hogy a cella, vagy tartomány után írjuk ponttal elválasztva a tulajdonságot és = jel után adunk neki értéket. A leggyakrabban használt tulajdonságok: – Value: a cella értéke, ha szöveg, akkor idézőjelek közé kell tenni. • Cells(1,1).Value = ″Alma″ • Cells(1,1) = ″Alma″ – Interior.Color: a cella háttérszíne szövegesen megadva. Az angol színelnevezéseket lehet használni, csak elé kell írni egybe vele, hogy vb • Cells(1,1).Interior.Color = vbRed 78/13
B IT M A N
Visual Basic – Cellatulajdonságok – Interior.ColorIndex: a cella háttérszíne számmal megadva. A Visual Basic 0-tól 56-ig számozza a színeket. A 0 színkód alapértelmezett színt jelent: háttér esetén fehér, karakter esetén fekete. Az A1 cella háttérszínét a következőképpen is pirosra lehet állítani (a 3-as a piros szín kódja): • Cells(1,1).Interior.ColorIndex = 3 – Font: a cella betűtípusa. Újabb ponttal elválasztva lehet megadni stílust, típust, színt a fent ismertetett módokon. A következő táblázatban példákat találunk az A1 cella betűformázásaira:
78/14
B IT M A N
Visual Basic – Cellatulajdonságok Betűtípus Arial-ra állítása
Cells(1,1).Font.Name = ″Arial″
Betűszín pirosra állítása
Cells(1,1).Font.Color = vbRed vagy Cells(1,1).Font.ColorIndex = 3
Betűméret 12-esre állítása
Cells(1,1).Font.Size = 12
Félkövér betűre állítás
Cells(1,1).Font.Bold = True
Dőlt betűre állítás
Cells(1,1).Font.Italic = True
– Row, Column: a cella sor és oszlopszáma. Olyan tulajdonságok, amit csak lekérdezni lehet, megváltoztatni nem.
78/15
B IT M A N
Visual Basic – Cellatulajdonságok Egy objektum több tulajdonságának megadásakor nem
kell az objektum megnevezését minden sorban leírni, hanem a With, End With kulcsszavak között elég egyszer megadni, hogy melyik objektumról van szó és aztán csak a tulajdonságokat és a tulajdonságértékeket kell egymás alatt sorolnunk minden sort ponttal kezdve. Munkafüzet1 – Module1 (Code)
78/16
Sub formaz() With Cells(1, 1).Font .Name = "Arial" .Color = vbRed .Size = 12 .Bold = True .Italic = True End With End Sub
B IT M A N
Visual Basic – Cellacímzés Használhatjuk a hagyományos cellacímzést, pl. A1 Használhatjuk a Sor-Oszlop címzést is, pl. R1C1 A programozás során írt képleteinknél is fontos, hogy
abszolút vagy relatív hivatkozást használunk. Hagyományos címzés: A1, $A$1 Sor-Oszlop címzés: – Abszolút cím: R1C2 – B2 cella – Relatív cím: A1-ben állva B2: R[1]C[1]
78/17
B IT M A N
Visual Basic – Cellacímzés A Sor-Oszlop címzésnél a sor számát mindig egy R, az
oszlop számát pedig egy C betű után kell írni. Azaz: például a B1-es cella az R1C2 kóddal hivatkozható. Ez a hivatkozás abszolút. Relatív hivatkozásnál a sorszám helyett azt kell számmal megadnunk, hogy hány cellát kell elmozdulnunk. Ha nem váltunk sort, vagy oszlopot, akkor nem kell írni semmit, ha váltunk, akkor pedig az elmozdulás mértékét szögletes zárójelek között kell megadni. Azaz az eggyel fel és kettővel jobbra lévő cellára hivatkozhatunk az R[-1]C[2] kóddal.
78/18
B IT M A N
Visual Basic – Cellacímzés Írjuk be a B1 cellába az =2*A1 képletet: Munkafüzet1 – Module1 (Code)
Cells(1, 2) = "=2*A1" Cells(1, 2) = "=2*RC[-1]"
Írjuk be a B1 cellába az =2*$A$1 képletet: Munkafüzet1 – Module1 (Code)
Cells(1, 2) = "=2*$A$1" Cells(1, 2) = "=2*R1C1"
78/19
B IT M A N
Visual Basic – Függvények Készítsük el a következő táblázatot:
Ugyanez makróval: Munkafüzet1 – Module1 (Code)
Sub Hatványozó() Cells(2, 3) = "=HATVÁNY(A2, B2)" End Sub
78/20
B IT M A N
Visual Basic – Függvények Megoldás Munkafüzet1 – Module1 (Code)
Sub Hatványozó() Cells(2, 3) = "=POWER(A2, B2)" End Sub
Tehát:
– angol függvényneveket kell használni, – a paramétereket vesszővel kell elválasztani.
78/21
B IT M A N
Visual Basic – Munkafüzet mentése Ha van makró a munkafüzetben, Makróbarát Excel
munkafüzetként (*.xlsx) lehet elmenteni!
78/22
B IT M A N
Feladat 1. Készítsünk egy makrót, amely kiszínezi az A1:C11
tartományt a B13 cellába beírt kódnak megfelelő színűre. A színkód 0-56 közötti lehet. A színezés után a B13 cella legyen az aktuális. Készítsünk egy másik makrót is, mely kitörli a tartomány háttérszínét (színkód=0). A törlés után a B13 cella legyen az aktuális.
78/23
B IT M A N
Feladat 1. – Megoldás Munkafüzet1 – Module1 (Code)
Sub Makró1() Range("A1:C11").Interior.ColorIndex = Cells(13, 2) Cells(13, 2).Select End Sub ----------------------------------------------------------------------Sub Makró2() Range("A1:C11").Interior.ColorIndex = 0 Cells(13, 2).Select End Sub
78/24
B IT M A N
Visual Basic – Nyomógombok Készítsünk két nyomógombot, és rendeljük hozzájuk az
elkészült makrókat. 1
4 3 2
78/25
B IT M A N
Visual Basic – Nyomógombok A végeredmény:
5 78/26
B IT M A N
Feladat 2. Készítsünk egy makrót, amely az A1:C5 tartomány
háttérszínét pirosra, betűszínét fehérre, betűtípusát TimesNR 12-es dőltbetűsre állítja. A formázás után az F2 cella legyen az aktuális. Készítsünk egy másik makrót is, mely visszaállítja az előző formázásokat: nincs háttérszín, és Calibri 11-es normál típusúak lesznek a betűk. A formázás után az F2 cella legyen az aktuális. A két makrót nyomógombokkal lehessen indítani.
78/27
B IT M A N
Feladat 2. – Megoldás (Formázás) Munkafüzet1 – Module1 (Code)
Sub Formáz() Range("A1:C5").Select With Selection.Font .Name = "Times New Roman" .Color = vbWhite .Size = 12 .Italic = True End With Range("A1:C5").Interior.ColorIndex = 3 Cells(2, 6).Select End Sub
78/28
B IT M A N
Feladat 2. – Megoldás (VisszaFormázás) Munkafüzet1 – Module1 (Code)
Sub VisszaFormáz() Range("A1:C5").Select With Selection.Font .Name = "Calibri" .Color = vbBlack .Size = 11 .Italic = False End With Range("A1:C5").Interior.ColorIndex = 0 Cells(2, 6).Select End Sub
78/29
B IT M A N
Feladat 2. – Megoldás
78/30
B IT M A N
Visual Basic – Feltételes utasítás Munkafüzet1 – Module1 (Code)
If feltétel Then utasítások, amelyek akkor futnak le, ha a feltétel igaz Else utasítások, amelyek akkor futnak le, ha a feltétel hamis End If
Az If és az End If kötelező, az Else ág elhagyható
78/31
B IT M A N
Visual Basic – Ciklusok Munkafüzet1 – Module1 (Code)
For ciklusváltozó = kezdőérték To végérték Step_ lépésköz ciklusmag Next
Ha nem adtunk meg lépésközt, akkor annak értéke: +1 Munkafüzet1 – Module1 (Code)
Do While feltétel ciklusmag Loop
Elöltesztelő
Munkafüzet1 – Module1 (Code)
Do ciklusmag Loop Until feltétel 78/32
Hátultesztelő
B IT M A N
Visual Basic – Ciklusok Összegzés 1-10-ig a különböző ciklusokkal Munkafüzet1 – Module1 (Code)
ossz = 0 For i = 1 To 10 ossz = ossz + i Next ossz = 0 i=1 Do While i <= 10 ossz = ossz + i i=i+1 Loop
78/33
ossz = 0 i=1 Do ossz = ossz + i i=i+1 Loop Until i > 10
B IT M A N
Feladat 3. Készítsünk makrót, amely az A
oszlopot feltölti az egész számokkal 1-től 56-ig! A B oszlop celláinak háttérszíne legyen az A oszlopban lévő számoknak megfelelő! Megoldás Munkafüzet1 – Module1 (Code)
Sub SzínFeltölt() For i = 1 To 56 Cells(i, 1) = i Cells(i, 2).Interior.ColorIndex = i Next End Sub 78/34
B IT M A N
Feladat 4. Készítsünk makrót, amely feltölti az A1:J10 tartományt a
10*10-es szorzótáblával! A 3-mal osztható számok hátterét színezzük sárgára, az egy maradékot adókét kékre, a 2 maradékot adókét zöldre! Megoldás Munkafüzet1 – Module1 (Code)
Sub Szorzótábla() For i = 1 To 10 For j = 1 To 10 Cells(i, j) = i * j If i * j Mod 3 = 0 Then Cells(i, j).Interior.ColorIndex = 3 If i * j Mod 3 = 1 Then Cells(i, j).Interior.ColorIndex = 41 If i * j Mod 3 = 2 Then Cells(i, j).Interior.ColorIndex = 10 Next Next End78/35 Sub
B IT M A N
Visual Basic – Beolvasás, kiírás Munkafüzet1 – Module1 (Code)
Sub Üdvözöl() Do nev = InputBox("Hogy hívnak?", "Kérdés") Loop Until nev <> Empty MsgBox "Szervusz kedves " & nev & "!", 0, "Üdvözlet" End Sub
78/36
B IT M A N
Visual Basic – Véletlen számok A véletlen számok generálására szolgáló függvény az
Rnd. Ez a függvény így argumentum nélkül használható és egy véletlen számot ad eredményül 0 és 1 félig zárt intervallumban, 0 lehet, 1 nem. Ennek a függvénynek a transzformálásával lehet megadni, hogy milyen számokat akarunk generálni. Például –10 és +10 közötti páros számokat szeretnénk, úgy hogy a –10 és a +10 is közte legyen: (Int(Rnd*11) - 5)*2
78/37
B IT M A N
Visual Basic – Véletlen számok Munkafüzet1 – Module1 (Code)
Sub Véletlen() For i = 1 To 5 For j = 1 To 7 Cells(i, j) = Int((100 * Rnd) + 1) Next Next End Sub
78/38
B IT M A N
Feladat 5. Mi a funkciója a makrónak?
Megoldás
Munkafüzet1 – Module1 (Code)
Sub Feladat5() Cells.Interior.ColorIndex = 0 Cells.Font.ColorIndex = 0 Randomize For i = 2 To 18 Cells(i, 1) = Int(Rnd * 14 - 6) If Cells(i, 1) Mod 2 = 0 Then Cells(i, 1).Font.Color = vbBlue Else Cells(i, 1).Interior.Color = vbYellow End If Next End Sub 78/39
B IT M A N
Visual Basic – Változók A leggyakoribb változó típusok: Név
Típus
Tartalom
Byte
Egész szám
0 – 255
Integer
Egész szám
-32 768 – +32 767
Long
Egész szám
-2 147 483 648 – +2 147 483 647
Single
Valós szám
-3.402823E38 – +3.402823E38.
Double
Valós szám
-1.79769313486232D308 – +1.79769313486232D308
String
Szöveg
Szöveg
Date
Dátum
Dátum és idő
Boolean
Logikai
True vagy False.
Object
Objektum
Microsoft Object.
Variant
Bármilyen típus
A nem deklarált változó típusa, a bele kerülő adattól függ a felvett típus
78/40
B IT M A N
Visual Basic – Változók Visual Basicben nem kötelező a változók deklarálása
(definiálása). A változók Variant típussal jönnek létre első használatkor. Ha a változót definiáltuk valamilyen típusra, akkor a megadott típusnak megfelelő műveleteket hajthatunk végre vele. Ez gondokat is okozhat, ha nem megfelelő tartalmat adunk meg. Változót a Dim kulcsszó segítségével deklarálhatunk: – Dim változónév As változótípus – Dim i,j,k As integer 78/41
B IT M A N
Visual Basic – Változók A VBA-ban elég gyakran működik az automatikus
típuskonverzió, azaz ha például egy szöveg típusú számot tartalmazó változóval számra jellemző műveletet végzünk (szorzás, osztás, stb.), akkor az számként fog viselkedni. Munkafüzet1 – Module1 (Code)
Sub Prb() Dim a As Double Dim b As String a = 10 b = 3.2 Cells(1, 1) = a + b End Sub
78/42
B IT M A N
Visual Basic – Néhány hasznos függvény Számvizsgálat: IsNumeric(Változó)
– Ha a változó tartalma numerikus érték értéke True, egyébként False. Munkafüzet1 – Module1 (Code)
Sub bekerciklus() Dim szam As Variant szam = InputBox("Kérem a születési évedet!") Do While IsNumeric(szam) = False MsgBox ("Ismételje meg, nem számot adott") szam = InputBox("Kérem a születési évedet!") Loop Cells(3, 4) = szam End Sub
78/43
B IT M A N
Visual Basic – Néhány hasznos függvény Val(érték) – Valós számmá konvertál. A ,-től
megbolondul. Str(érték) – Szöveggé konvertál Int(érték) – Egész számmá konvertál
78/44
B IT M A N
Visual Basic – Tömbök A tömbváltozóknak az a jellemzője, hogy egy névvel és
egy indexszámmal azonosítjuk őket. Az azonos nevű, azonos típusú és különböző indexszámú változók alkotnak egy tömböt. Visual Basic-ben az indexszámot ()-be kell írni. Deklarálásnál meg kell adnunk a To kulcsszó segítségével az indexek kezdő és záró értékét, vagy csak a záróértéket: – Dim A(0 To 5) As String – Dim B(5) As String
78/45
B IT M A N
Visual Basic – Tömbök
Munkafüzet1 – Module1 (Code)
Sub Tomb1() Dim nev(1 To 5) As String For i = 1 To 5 nev(i) = InputBox(i & ". név:") Cells(i, 1) = nev(i) Next End Sub
78/46
B IT M A N
Feladat 6. Mi a funkciója a makrónak? Munkafüzet1 – Module1 (Code)
Megoldás
Sub Feladat6() x=1 For i = 2 To 10 If Cells(i, 1) < Cells(x, 1) Then x=i End If Next MsgBox ("Az eredmény: " & Cells(x, 1)) End Sub
78/47
B IT M A N
Feladat 7. Mi a funkciója a makrónak? Munkafüzet1 – Module1 (Code)
Megoldás
Sub Feladat7() For i = 10 To 2 Step -1 For j = 1 To i - 1 If Cells(j, 1) > Cells(j + 1, 1) Then s = Cells(j, 1) Cells(j, 1) = Cells(j + 1, 1) Cells(j + 1, 1) = s End If Next j Next i End Sub
78/48
B IT M A N
Feladat 8.
Mi a funkciója a makrónak?
Munkafüzet1 – Module1 (Code)
78/49
Sub vr() For i = 1 To 10 Cells(i, 2).Value = WorksheetFunction.RandBetween(0, 1000) Next i For i = 1 To 10 For j = i + 1 To 10 If Cells(j, 2).Value < Cells(i, 2).Value Then tempString = Cells(i, 1).Value Cells(i, 1).Value = Cells(j, 1).Value Cells(j, 1).Value = tempString tempInteger = Cells(i, 2).Value Cells(i, 2).Value = Cells(j, 2).Value Cells(j, 2).Value = tempInteger End If Next j Next i Range("B1:B10").Clear End Sub
B IT M A N
Feladat 8. Megoldás
78/50
B IT M A N
Visual Basic – Diagram rajzolás Munkafüzet1 – Module1 (Code)
Sub Tomb1() Dim abra As ChartObject Set abra = ActiveSheet.ChartObjects.Add( Left:=140, Width:=400, Top:=100, Height:=300) abra.Chart.SetSourceData (ActiveSheet.Range("A1:B7")) abra.Chart.ChartType = xl3DColumnClustered End Sub
78/51
B IT M A N
Visual Basic – Diagram rajzolás
78/52
B IT M A N
Visual Basic – Extramini adatbázis-kezelő 4 1
5
2
Ctrl
+ A 6 3
78/53
7
B IT M A N
Visual Basic – Extramini adatbázis-kezelő Munkafüzet1 – Module1 (Code)
Sub auto_open() 'Az ilyen nevű makró a fájl indításakor automatikusan lefut uzi = "A ctrl+a megnyomásával kezdeményezhető az adatfelvétel" 'A szöveget betesszük az uzi nevű változóba MsgBox uzi, 64, "INFO" 'uzi a szöveg, 64 a ikon kódja, INFO az ablak fejléc felirata End Sub ------------------------------------------------------------------------------------Sub kerdes() valasz = MsgBox("Ír be új adatot?", 36, "Kérdés") 'Igen gomb esetén a 6-os értéket veszi fel, 36 ikon If valasz = 6 Then adatbe End If End Sub
78/54
B IT M A N
Visual Basic – Extramini adatbázis-kezelő Munkafüzet1 – Module1 (Code)
Sub adatbe() Range("A1").Select Selection.CurrentRegion.Select 'Meghatározza hány sorból áll a táblázat sor = Selection.Rows.Count 'A következő beírás sorának a száma hova = sor + 1 Cells(hova, 1).Select 'Információk bekérése inputboxokkal neve = InputBox("Adja meg a nevet!", "Név") kora = InputBox("Adja meg az életkort!", "Életkor") lakik = InputBox("Adja meg a címet!", "Lakcím") Cells(hova, 1) = neve Cells(hova, 2) = kora Cells(hova, 3) = lakik kerdes 'A kerdes nevű makró meghívása End Sub 78/55
B IT M A N
Visual Basic – Extramini adatbázis-kezelő
78/56
B IT M A N
Szupermini adatbázis-kezelő Űrlap segítségével vihetők fel, és listázhatók ki az
adatok
78/57
B IT M A N
Szupermini adatbázis-kezelő
1 2 3
4
78/58
B IT M A N
Szupermini adatbázis-kezelő
Label
TextBox
Button
78/59
B IT M A N
Szupermini adatbázis-kezelő
Minden eszköznél ugyanígy: - Label, - TextBox, - Button Felirat szövege
Betűtípus, betűméret
78/60
B IT M A N
Szupermini adatbázis-kezelő
Munkafüzet1 – Module1 (Code)
Dim id As Integer, i As Integer, j As Integer, flag As Boolean -----------------------------------------------------------------------------Sub Indit() UserForm1.Show End Sub -----------------------------------------------------------------------------Sub ClearForm() For j = 1 To 3 UserForm1.Controls("TextBox" & j).Value = "" Next j End Sub 78/61
B IT M A N
Szupermini adatbázis-kezelő Munkafüzet1 – Module1 (Code)
78/62
Sub GetData() If IsNumeric(UserForm1.TextBox1.Value) Then flag = False i=0 id = UserForm1.TextBox1.Value Do While Cells(i + 1, 1).Value <> "" If Cells(i + 1, 1).Value = id Then flag = True For j = 2 To 3 UserForm1.Controls("TextBox" & j).Value = Cells(i + 1, j).Value Next j End If i=i+1 Loop If flag = False Then For j = 2 To 3 UserForm1.Controls("TextBox" & j).Value = "" Next j End If Else ClearForm End If End Sub
B IT M A N
Szupermini adatbázis-kezelő Munkafüzet1 – Module1 (Code)
Sub EditAdd() Dim emptyRow As Long If UserForm1.TextBox1.Value <> "" Then flag = False i=0 id = UserForm1.TextBox1.Value emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1 Do While Cells(i + 1, 1).Value <> "" If Cells(i + 1, 1).Value = id Then flag = True For j = 2 To 3 Cells(i + 1, j).Value = UserForm1.Controls("TextBox" & j).Value Next j End If i=i+1 Loop If flag = False Then For j = 1 To 3 Cells(emptyRow, j).Value = UserForm1.Controls("TextBox" & j).Value Next j End If 78/63 End If End Sub
B IT M A N
Szupermini adatbázis-kezelő 2
1
Akció
Eszköz 2x
Működést leíró kód
3
4
Eszközök
Akciók
Működést leíró kódok 78/64
B IT M A N
Szupermini adatbázis-kezelő Munkafüzet1 – UserForm1 (Code)
Private Sub UserForm_Initialize() TextBox1.SetFocus End Sub Private Sub TextBox1_Change() GetData End Sub Private Sub CommandButton1_Click() EditAdd End Sub Private Sub CommandButton2_Click() ClearForm End Sub
Private Sub CommandButton3_Click() Unload Me End Sub 78/65
B IT M A N
Szupermini adatbázis-kezelő
78/66
B IT M A N
Feladat 9. – A Főnök régi kedvence A Főnök gépén frissült a Windows, és eltűnt régi
kedvenc telefon regisztere. Maradt róla egy kép, és a kódok zöme. Állítsa helyre a Főnök régi kedvenc programját! Picit én is segítek!
78/67
B IT M A N
Feladat 9. – A Főnök régi kedvence
78/68
B IT M A N
Feladat 9. – A Főnök régi kedvence Munkafüzet1 – UserForm1 (Code)
Option Explicit Dim POZICIO As Integer Dim darab As Integer
78/69
Private Sub UserForm_Activate() 'A form indulásakor végrehajtott utasítások POZICIO = 1 darab = 1 Dim i As Integer For i = 2 To 20 If Cells(i, "a") = "" Then darab = i - 1 Exit For End If Next i If darab > 1 Then CommandButton1.Visible = True Else CommandButton1.Visible = False End If Label3.Caption = darab - 1 End Sub
B IT M A N
Feladat 9. – A Főnök régi kedvence Munkafüzet1 – UserForm1 (Code)
78/70
Private Sub CommandButton1_Click() ' Törlés gomb Dim i As Integer If POZICIO < darab Then For i = POZICIO + 1 To darab Cells(i - 1, 1) = Cells(i, 1) Cells(i - 1, 2) = Cells(i, 2) Cells(i - 1, 3) = Cells(i, 3) Next i Cells(darab, 1) = "" Cells(darab, 2) = "" Cells(darab, 3) = "" Else Cells(POZICIO, 1) = "" Cells(POZICIO, 2) = "" Cells(POZICIO, 3) = "" End If If darab > 1 Then darab = darab - 1 Else CommandButton1.Visible = False End If End Sub
B IT M A N
Feladat 9. – A Főnök régi kedvence Munkafüzet1 – UserForm1 (Code)
Private Sub CommandButton2_click() 'Adatok felvitele Dim szoveg As String Dim i, x As Integer If TextBox1.Value <> "" Then darab = darab + 1 Cells(darab, "a") = TextBox1.Value Cells(darab, "b") = TextBox2.Value Cells(darab, "c") = CheckBox1.Value TextBox1.Value = "" TextBox2.Value = "" CheckBox1.Value = False Else If darab <> 1 Then MsgBox ("Üres név nem vihető fel!") End If End If Label3.Caption = darab - 1 End Sub
78/71
B IT M A N
Feladat 9. – A Főnök régi kedvence Munkafüzet1 – UserForm1 (Code)
Private Sub CommandButton3_click() 'Lista gomb - Listázás TextBox1.Value = Cells(2, 1) TextBox2.Value = Cells(2, 2) CheckBox1.Value = Cells(2, 3) POZICIO = 2 Label3.Caption = POZICIO - 1 End Sub Private Sub CommandButton4_click() 'Módosítás Cells(POZICIO, "a") = TextBox1.Value Cells(POZICIO, "b") = TextBox2.Value Cells(POZICIO, "c") = CheckBox1.Value End Sub
78/72
B IT M A N
Feladat 9. – A Főnök régi kedvence Munkafüzet1 – UserForm1 (Code)
Sub bevitel(ByRef s As Integer) TextBox1.Value = Cells(s, 1) TextBox2.Value = Cells(s, 2) CheckBox1.Value = Cells(s, 3) End Sub
Private Sub SpinButton1_SpinUp() If POZICIO > 2 Then POZICIO = POZICIO - 1 Label3.Caption = POZICIO - 1 bevitel (POZICIO) End Sub Private Sub SpinButton1_SpinDown() If POZICIO < darab Then POZICIO = POZICIO + 1 Label3.Caption = POZICIO - 1 bevitel (POZICIO) End Sub
78/73
B IT M A N
Feladat 9. – A Főnök régi kedvence 1
Terület kijelölése, elnevezése
ListBox létrehozása, beállítása
2
3 Háttérszín
Oszlopok száma Nem szerkeszthető Betűméret Adatok forrása 78/74
B IT M A N
Feladat 9. – A Főnök régi kedvence
Munkafüzet1 – Module1 (Code)
Sub indit() UserForm1.Show End Sub
78/75
B IT M A N
78/76
B IT M A N
Felhasznált irodalom Lévayné dr. Lakner Mária – Baksa-Haskó Gabriella:
Excel 2003 táblázatkezelés és programozás a gyakorlatban, ComputerBooks Budapest, 2006
78/77
B IT M A N
VÉGE 78/78
B IT M A N